home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2004 #11 / Amiga Plus CD - 2004 - No. 11.iso / AmiSoft / Game / demo / Mattonite.lha / Mattonite / Mattonite.AMOS / Mattonite.amosSourceCode
AMOS Source Code  |  2004-06-13  |  132KB  |  3,703 lines

  1. '-> Mattonite by Stefano Maria Regattin
  2. 'i> 2 ottobre 1996 
  3. 'm> 3,8,12,13,14,19,25,27,31 ottobre 1996
  4. 'm> 9 novembre 1996
  5. 'm> 12 novembre 1997 
  6. 'm> 17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 maggio 2000 
  7. 'm> 1,4,5,6,7,8,9,11,13,14,23,26,27,28 giugno 2000 
  8. 'm> 16,17,18,19,23,24 luglio 2000
  9. 'm> 5,12,13,14,15,30 agosto 2000 
  10. 'm> 1,10,11,26 settembre 2000
  11. 'm> 12,15,24,25,26,31 ottobre 2000 
  12. 'm> 2,16,17,21,23 novembre 2000
  13. 'm> 3 dicembre 2000
  14. 'm> 5,7,8,9,10,11,13,14,17,18,22,25,26,27,28 febbraio 2001 
  15. 'm> 1 marzo 2001 
  16. 'm> 15,22,23,26 aprile 2001
  17. 'm> 19,20,22,26,27,29 maggio 2001
  18. 'm> 1,2,3,4,5,9,10,12,25,28 giugno 2001
  19. 'm> 1,2,3,6,7,10,14,15,16,29,30 luglio 2001
  20. 'm> 7,8,9,14,29 agosto 2001
  21. 'm> 9,17 settembre 2001
  22. 'm> 4,5,6,7,11,12,13,15 ottobre 2001 
  23. 'm> 2,3,4,5,6,8,22,25,26 novembre 2001 
  24. 'm> 3,9,17,18,28,30 dicembre 2001
  25. 'm> 6,27,28 gennaio 2002 
  26. 'm> 13 febbraio 2002 
  27. 'm> 1,2,8,12 giugno 2002 
  28. 'm> 31 luglio 2002 
  29. 'm> 1,6,9,12,16,17,18,26,27 agosto 2002
  30. 'm> 11,12 settembre 2002 
  31. 'm> 28,29 ottobre 2002 
  32. 'm> 23,25 gennaio 2003 
  33. 'm> 4,7,11,12,13,23,28 febbraio 2003 
  34. 'm> 15,18,30,31 marzo 2003 
  35. 'm> 28 aprile 2003 
  36. 'm> 15,16,26 maggio 2003 
  37. 'm> 2,8,11 giugno 2003 
  38. 'm> 2 luglio 2003
  39. 'm> 21,22 agosto 2003
  40. 'm> 13,14,25 ottobre 2003
  41. 'm> 14 gennaio 2004
  42. 'm> 19 maggio 2004 
  43. 'm> 12,13 giugno 2004
  44. '--------------------- 
  45. Set Buffer 25
  46. 'allocates 25 kiloBytes for variables space
  47. Degree 
  48. 'activates the degree angle misuration settings for trigonometric functions
  49. ' like Sin() and Cos() 
  50. OGGETTISTANDARD$="MattoniteStandardObjects.Abk"
  51. 'standard graphics objects 
  52. OGGETTICOLORATI$="MattoniteColouredObjects.Abk"
  53. 'coloured graphics objects 
  54. EFFETTISONORI$="MattoniteSoundFXs.Abk"
  55. 'sounds
  56. M0DULOMEDUNO$="MattoniteMusic.MED"
  57. 'first OctaMED module  
  58. M0DULOMEDDUE$="MusicPath.MED"
  59. 'second OctaMED module 
  60. PUNTEGGI$="TopHundredScores"
  61. 'top hundred scores
  62. VERO=-1
  63. 'true
  64. FALSO=0
  65. 'false 
  66. 'these are set not for commodity but for strange running of the executable 
  67. ' derivated from this source if you replace the VERO (that means True in 
  68. ' italian) and FALSO (that means False in italian) with the original True and
  69. ' False constants
  70. ACAPO$=Chr$(10)
  71. 'new line char 
  72. ALTEZZAFONT=8
  73. 'font height 
  74. BANCOTEMPORANEO=65535
  75. 'temporary bank
  76. BANCODELLIVELLO=65534
  77. 'level bank
  78. BANCODELMOTIVODIFONDO=65533
  79. 'background motive bank
  80. BANCODELMODULOMED=1023
  81. 'OctaMED module music bank 
  82. DURATADELMOTIVODIFONDO=0
  83. 'background motive duration, that is fifty fiftythes (one second) for 14 secs
  84. IMMAGINIBOING=8
  85. 'boing images
  86. IMMAGINIBOINGMORTALE=26
  87. 'killer boing images 
  88. IMMAGINIESPLOSIONEMATTONCINO=13
  89. 'brick explosion images
  90. IMMAGINIGUANO=1
  91. 'guano images
  92. IMMAGININEMICOUNO=36
  93. 'enemy one images
  94. IMMAGINIPAPERO=4
  95. 'duck images 
  96. IMMAGINIPROIETTILENEMICIUNO=1
  97. 'enemies one bullet images 
  98. IMMAGINIRUBAPALLINA=11
  99. 'ballthief images
  100. LARGHEZZAPANNELLO=48
  101. 'panel width 
  102. MASSIMOBOINGINCAMPO=3
  103. 'boing maximum 
  104. MASSIMOCOMPORTAMENTIDEINEMICI=1
  105. 'enemy behavioures maximum 
  106. MASSIMOMATTONCINIDARIDISEGNARE=247
  107. 'brick to redraw maximum 
  108. MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO=8
  109. 'bonus bricks maximum
  110. MASSIMONEMICIUNOINCAMPO=5
  111. 'enemies one maximum 
  112. MASSIMOPALLINEINCAMPO=5
  113. 'balls maximum 
  114. MASSIMOPROIETTILIINCAMPO=MASSSIMONEMICIUNOINCAMPO
  115. MATTONCINIDIPOTENZIAMENTOCOLORATI=0
  116. 'flag that reports 1 if you want the coloured objects or 0 if you want the 
  117. ' standard ones
  118. MOSTRASOLOILPUNTEGGIOMASSIMO=1
  119. 'flag that report 1 if you want the top score displayed or 0 if only the 
  120. ' higher coming
  121. MOTIVODIFONDOCARICATO=0
  122. 'background motive loaded flag 
  123. OGGETTORIGA=0
  124. 'row object
  125. OGGETTOCENTRODELLABARRA=1
  126. 'bar centre object 
  127. OGGETTOLATIDELLABARRA=OGGETTOCENTRODELLABARRA+1
  128. 'bar sides object
  129. OGGETTOLASER=OGGETTOLATIDELLABARRA+1
  130. 'laser beam object 
  131. OGGETTORAGGIOLASER=OGGETTOLASER+1
  132. 'laser ray object
  133. OGGETTOMATTONCINODIPOTENZIAMENTO=OGGETTORAGGIOLASER+1
  134. 'first bonus bricks object 
  135. OGGETTOBOING=OGGETTOMATTONCINODIPOTENZIAMENTO+MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO
  136. 'first boing object
  137. OGGETTONEMICOUNO=OGGETTOBOING+MASSIMOBOINGINCAMPO
  138. 'first enemy one object
  139. OGGETTOPROIETTILENEMICOUNO=OGGETTONEMICOUNO+MASSIMONEMICIUNOINCAMPO
  140. 'first enemies one bullet
  141. OGGETTOPAPERO=251
  142. 'duck object 
  143. OGGETTOGUANO=252
  144. 'guano object
  145. OGGETTOPAPEROALIENO=253
  146. 'alien duck object 
  147. OGGETTORUBAPALLINA=254
  148. 'ballthief object
  149. OGGETTOPALLINA=OGGETTOPAPERO-MASSIMOPALLINEINCAMPO
  150. 'first ball object 
  151. PRIMAPARTITA=VERO
  152. 'this flag is true if you are playing your first game
  153. RITARDODELLENTRATAINCAMPODEIBOING=-1000
  154. 'boing in game appearition delay 
  155. RITARDODELLENTRATAINCAMPODEINEMICI=-3000
  156. 'enemies in game appearition delay 
  157. SEMITONO#=1.05946
  158. 'distance between two semitones multiply factor
  159. VOCE=1
  160. 'voice 
  161. Dim NOMEDELGIOCATORE$(99),LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(99)
  162. 'players name, level up to the players have played 
  163. Dim PUNTEGGIODELGIOCATORE$(99)
  164. 'player score
  165. Dim DELTAXPALLINA#(MASSIMOPALLINEINCAMPO-1)
  166. 'ball X movement 
  167. Dim DELTAXPROIETTILENEMICOUNO#(MASSIMONEMICIUNOINCAMPO-1)
  168. 'enemy one bullet X movement 
  169. Dim DELTAYPALLINA#(MASSIMOPALLINEINCAMPO-1)
  170. 'ball Y movement 
  171. Dim DELTAYPROIETTILENEMICOUNO#(MASSIMONEMICIUNOINCAMPO-1)
  172. 'enemy one bullet Y movement 
  173. Dim VELOCITADELLAPALLINA#(MASSIMOPALLINEINCAMPO-1)
  174. 'ball velocity 
  175. Dim XPALLINA#(MASSIMOPALLINEINCAMPO-1),YPALLINA#(MASSIMOPALLINEINCAMPO-1)
  176. 'X and Y balls coords on screen
  177. Dim BOING(MASSIMOBOINGINCAMPO-1),BOINGMORTALE(MASSIMOBOINGINCAMPO-1)
  178. 'boings, killer boing marker 
  179. Dim C0LORE(31),DURATADELLARIGA(2)
  180. 'colors that can be changed, row in game duration
  181. Dim DURATADELRIDISEGNODELMATTONCINO(MASSIMOMATTONCINIDARIDISEGNARE-1)
  182. 'redrawing brick process duration
  183. Dim ESPLOSIONEMATTONCINO(246),IMMAGINEBOING(IMMAGINIBOING-1)
  184. 'brick explosion, boing image
  185. Dim IMMAGINEBOINGMORTALE(IMMAGINIBOINGMORTALE)
  186. 'killer boing image  
  187. Dim IMMAGINEESPLOSIONEMATTONCINO(IMMAGINIESPLOSIONEMATTONCINO)
  188. 'brick explosion image 
  189. Dim IMMAGINENEMICOUNO(IMMAGININEMICOUNO-1)
  190. 'enemy one image 
  191. Dim IMMAGINEPAPERO(IMMAGINIPAPERO-1),IMMAGINEPAPEROALIENO(IMMAGINIPAPERO-1)
  192. 'duck image, alien duck image
  193. Dim IMMAGINERUBAPALLINA(IMMAGINIRUBAPALLINA-1),INGOMBRODELLABARRA(2)
  194. 'ballthief image, bar side width 
  195. Dim LAPALLINAERIMASTAINCOLLATAALLABARRA(MASSIMOPALLINEINCAMPO-1)
  196. 'ball glued to the bar 
  197. Dim LAPALLINAHACOLPITOLABARRA(MASSIMOPALLINEINCAMPO-1)
  198. 'ball has hitted the bar 
  199. Dim LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(MASSIMOPALLINEINCAMPO-1)
  200. 'ball has hitted one bar side
  201. Dim MATTONCINO(246),MATTONCINODARIDISEGNARE(MASSIMOMATTONCINIDARIDISEGNARE-1)
  202. 'brick, brick to be redrawed 
  203. Dim MATTONCINODIPOTENZIAMENTO(MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1)
  204. 'bonus brick 
  205. Dim NEMICOUNO(MASSIMONEMICIUNOINCAMPO-1)
  206. 'enemy one 
  207. Dim PALLINA(MASSIMOPALLINEINCAMPO-1)
  208. 'ball
  209. Dim PROIETTILENEMICOUNO(MASSIMONEMICIUNOINCAMPO-1)
  210. 'enemy one bullet  
  211. Dim ROTAZIONEBOING(MASSIMOBOINGINCAMPO-1)
  212. 'boing rotation direction
  213. Dim ROTAZIONENEMICOUNO(MASSIMONEMICIUNOINCAMPO-1)
  214. 'enemy one rotation direction
  215. Dim X0ZONA(246),XBOING(MASSIMOBOINGINCAMPO-1),XCOLLA(MASSIMOPALLINEINCAMPO-1)
  216. 'brick X coord, boing X coord, glued ball X coord
  217. Dim XDIPARTENZANEMICOUNO(MASSIMONEMICIUNOINCAMPO-1)
  218. 'enemies one start X 
  219. Dim XMATTONCINODIPOTENZIAMENTO(MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1)
  220. 'X bonus brick coord 
  221. Dim XNEMICOUNO(MASSIMONEMICIUNOINCAMPO-1)
  222. 'enemy one X coord,
  223. Dim XPROIETTILENEMICOUNO(MASSIMONEMICIUNOINCAMPO-1),Y0ZONA(246)
  224. 'enemy one bullet X coord, brick Y coord 
  225. Dim YBOING(MASSIMOBOINGINCAMPO-1),YCOLLA(MASSIMOPALLINEINCAMPO-1)
  226. 'boing Y coord, glued ball Y coord 
  227. Dim YMATTONCINODIPOTENZIAMENTO(MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1)
  228. 'Y bonus brick coord 
  229. Dim YNEMICOUNO(MASSIMONEMICIUNOINCAMPO-1)
  230. 'enemy one Y coord 
  231. Dim YPROIETTILENEMICOUNO(MASSIMONEMICIUNOINCAMPO-1)
  232. 'enemy one bullet Y coord  
  233. Global VERO,FALSO
  234. 'True. False 
  235. Global ACAPO$,CENTOGIOCATORI$,EFFETTISONORI$,OGGETTI$,M0DULOMEDUNO$
  236. 'one hundred players, soundFXs, objects, med module one
  237. Global M0DULOMEDDUE$,OGGETTICOLORATI$,OGGETTISTANDARD$,PERCORSO$
  238. 'med module two, coloured objects, standard objects, main path 
  239. Global PERCORSODEILIVELLI$,PERCORSODELLAGRAFICA$,PERCORSODELLAMUSICA$
  240. 'levels path ,graphics path, music path
  241. Global PUNTEGGI$
  242. 'scores path 
  243. Global SEMITONO#
  244. 'semitone multiply/divide factor 
  245. Global ALTEZZAFONT,BANCODELLIVELLO,BANCODELMODULOMED,BANCODELMOTIVODIFONDO
  246. 'font height, level bank, med module bank, background motive bank  
  247. Global BANCOTEMPORANEO,_BARRE,COMPORTAMENTODEINEMICI
  248. 'temporary bank, bars, enemy behaviour 
  249. Global DISTANZADELMATTONCINOPIUVICINOALPAPERO,_BARRABLOCCATA,BOINGINCAMPO
  250. 'nearest to duck brick distance, locked bar, in game boings
  251. Global BONUS,C0LLA,C0LORIDELLOSCHERMOMENOUNO,DURATADELLARIGA
  252. 'bonus, glue, screen colours minus one, row time duration
  253. Global DURATADELMOTIVODIFONDO,EFFETTISONORICARICATI,FONTEDICARATTERI
  254. 'background motive duration, sound FXs loaded, selected chars font number
  255. Global GRADIPAPEROALIENO,GUANOINCAMPO,GUANOMOLLATO,IMMAGINEGUANO,IMMAGINELASER
  256. 'alien duck degrees ,guano activated, guano dropped, guano image,
  257. ' laser beam image 
  258. Global IMMAGINEPALLINA,IMMAGINEPAPERO,IMMAGINEPAPEROALIENO,IMMAGINERAGGIOLASER
  259. 'ball image, duck image, alien duck image, laser ray image 
  260. Global IMMAGINERUBAPALLINA,IMMAGINEPROIETTILENEMICIUNO,IMMAGINIBOING
  261. 'ballthief image, enemies one bullet image, boing images 
  262. Global IMMAGINIBOINGMORTALE,IMMAGINIESPLOSIONEMATTONCINO,IMMAGINIGUANO
  263. 'killer boing images, brick explosion images,guano images  
  264. Global IMMAGININEMICOUNO,IMMAGINIPAPERO,IMMAGINIPROIETTILENEMICIUNO
  265. 'enemy one images ,duck images, enemy one bullet images
  266. Global IMMAGINERIGADUE,IMMAGINERIGATRE,IMMAGINERIGAUNO,IMMAGINIRUBAPALLINA
  267. 'row type two images, row type three image, row type one image 
  268. ' ballthief images 
  269. Global LARGHEZZAPANNELLO,LASER,LIVELLO,LUNGHEZZADELLABARRA
  270. 'panel width, laser, level, bar width
  271. Global LUNGHEZZADELLABARRACAMBIATA,MASSIMOBOINGINCAMPO
  272. 'changed bar width, in game boings maximum   
  273. Global MASSIMOCOMPORTAMENTIDEINEMICI,MASSIMOMATTONCINIDARIDISEGNARE
  274. 'enemies behavioures maximum, bricks to be redrawed maximum  
  275. Global MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO,MASSIMONEMICIUNOINCAMPO
  276. 'in game bonus brick maximum, in game enemies one maximum
  277. Global MASSIMOPALLINEINCAMPO,MATTONCINI,MATTONCINIDIPOTENZIAMENTO
  278. 'in game balls maximum, in game bricks, bonus bricks number
  279. Global MATTONCINIDIPOTENZIAMENTOCOLORATI,MATTONCINIRIMASTI
  280. 'coloured bonus bricks, bricks left
  281. Global MATTONCINODATROVAREPERILPAPERO,MATTONCINOPERILPAPERO,M0DULOMEDCARICATO
  282. 'brick to find for the duck, brick for the duck, med module loaded 
  283. Global MOSTRASOLOILPUNTEGGIOMASSIMO,MOTIVODIFONDOCARICATO,OGGETTOBOING
  284. 'show only the top score, background motive loaded, first boing object 
  285. Global OGGETTOCENTRODELLABARRA,OGGCETTOGUANO,OGGETTOLASER,OGGETTOLATIDELLABARRA
  286. 'bar centre object, guano object, laser beam object, sides of the bar object 
  287. Global OGGETTOMATTONCINODIPOTENZIAMENTO,OGGETTONEMICOUNO,OGGETTOPALLINA
  288. 'first bonus brick object, first enemy one object, first ball object 
  289. Global OGGETTOPAPERO,OGGETTOPAPEROALIENO,OGGETTOPROIETTILENEMICOUNO
  290. 'duck object, alien duck object, first enemy one bullet object 
  291. Global OGGETTORAGGIOLASER,OGGETTORIGA,OGGETTORUBAPALLINA
  292. 'laser ray object, row object, ballthief object
  293. Global PALLINAPRESADALRUBAPALLINA,PALLINASCELTADALRUBAPALLINA
  294. 'ball taken by the ballthief, ball choosen by the ball thief, balls left 
  295. Global PALLINEINCAMPO,_PAPEROALIENO,_PAPEROALIENOINCAMPO,_PAPEROINCAMPO
  296. 'in game balls counter, alien duck status, in game alien duck, in game duck
  297. Global POSIZIONE,PUNTEGGIO,PUNTEGGIOMASSIMO,RAGGIOLASERRIFLESSO
  298. 'score position, score, maximum score, reflected laser ray 
  299. Global RAGGIOLASERSPARATO,RIGA,RIMBALZODELLEPALLINESUIMATTONCINI,RITARDOBOING
  300. 'laser ray fired, row status, balls bounce against bricks status, boing delay
  301. Global RITARDOPAPERO,RITARDODELGIOCO
  302. 'duck delay, game delay  
  303. Global RITARDODELLARIPETIZIONEDELSUONODELLAPALLINARUBATA
  304. 'ball taken sound repeat delay 
  305. Global RITARDODELLENTRATAINCAMPODEIBOING
  306. 'in game boing appearition time delay
  307. Global RITARDODELLENTRATAINCAMPODELPAPEROALIENO
  308. 'in game alien duck appearition time delay 
  309. Global RITARDODELLENTRATAINCAMPODELRUBAPALLINA
  310. 'in game ballthief appearition time delay
  311. Global RITARDODELLENTRATAINCAMPODEINEMICI,RITARDODEINEMICIUNO
  312. 'in game enemies appearition time delay, in game enemies one delay 
  313. Global RUBAPALLINACOLPITO,TASTO,TASTOGRIGIO,TASTOSCANSITO
  314. 'ballthief hitted, key, grey key, scanned key
  315. Global TEMP0TRASCORSODIGIOCO,T0GLILARIGA,VOCE,XBARRA,XFINALERIGA,XGUANO,XLASER
  316. 'game time spent, remove the row, voice, bar X coord, row ending X, guano X
  317. ' coord, laser beam X coord  
  318. Global XPANNELLO,XPAPERO,XPAPEROALIENO,XRIGA,XRUBAPALLINA,YBARRA,YGUANO,YLASER
  319. 'panel X coord, duck X coord, alien duck X coord, row X coord, ballthief X 
  320. ' coord, bar Y coord, guano Y coord, laser beam Y coord
  321. Global YPAPERO,YPAPEROALIENO,YRUBAPALLINA
  322. 'duck Y coord, alien duck Y coord, ballthief Y coord 
  323. Global NOMEDELGIOCATORE$(),LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$()
  324. 'player name,player latest level 
  325. Global PUNTEGGIODELGIOCATORE$()
  326. 'player score
  327. Global DELTAXPALLINA#(),DELTAXPROIETTILENEMICOUNO#(),DELTAYPALLINA#()
  328. 'ball X movement, enemy one bullet X movement, ball Y movement 
  329. Global DELTAYPROIETTILENEMICOUNO#(),VELOCITADELLAPALLINA#(),XPALLINA#()
  330. 'enemy one bullet Y movement, ball velocity, ball X coord  
  331. Global YPALLINA#()
  332. 'ball Y coord
  333. Global BOING(),BOINGMORTALE(),C0LORE(),DURATADELLARIGA()
  334. 'boing status, killer boing status, color, row time duration 
  335. Global DURATADELRIDISEGNODELMATTONCINO(),ESPLOSIONEMATTONCINO()
  336. 'brick redrawing time duration, brick explosion
  337. Global IMMAGINEBOING(),IMMAGINEBOINGMORTALE(),IMMAGINEESPLOSIONEMATTONCINO()
  338. 'boing image, killer boing image, brick explosion image
  339. Global IMMAGINENEMICOUNO(),IMMAGINEPAPERO(),IMMAGINEPAPEROALIENO()
  340. 'enemy one image, duck image, alien duck image 
  341. Global IMMAGINERUBAPALLINA(),INGOMBRODELLABARRA()
  342. 'ballthief image ,bar side width 
  343. Global LAPALLINAERIMASTAINCOLLATAALLABARRA(),LAPALLINAHACOLPITOLABARRA()
  344. 'ball glued to the bar, ball has hitted the bar
  345. Global LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(),MATTONCINO()
  346. 'ball has hitted a bar side, brick 
  347. Global MATTONCINODARIDISEGNARE(),MATTONCINODIPOTENZIAMENTO(),NEMICOUNO()
  348. 'brick to be redrawn, bonus brick, enemy one 
  349. Global PALLINA(),PROIETTILENEMICOUNO(),ROTAZIONEBOING(),ROTAZIONENEMICOUNO()
  350. 'ball, enemy one bullet, enemy one rotation, boing rotation
  351. Global X0ZONA(),XBOING(),XCOLLA()
  352. 'brick X coord, boing X coord, ball glued X coord  
  353. Global XDIPARTENZANEMICOUNO(),XMATTONCINODIPOTENZIAMENTO(),XNEMICOUNO()
  354. 'enemy one start X, bonus brick X coord, enemy one X coord 
  355. Global XPROIETTILENEMICOUNO(),Y0ZONA(),YBOING(),YCOLLA()
  356. 'enemy one bullet X coord, brick Y coord, boing Y coord, ball glued Y coord
  357. Global YMATTONCINODIPOTENZIAMENTO(),YNEMICOUNO(),YPROIETTILENEMICOUNO()
  358. 'bonus brick Y coord, enemy one Y coord, enemy one bullet Y coord
  359. Proc INDIVIDUALAPOSIZIONEDELPROGRAMMA
  360. Proc IMPOSTAIPERCORSIDEIFILE
  361. Proc IMPOSTALOSCHERMO
  362. If MATTONCINIDIPOTENZIAMENTOCOLORATI=1
  363.  OGGETTI$=OGGETTICOLORATI$
  364. Else 
  365.  OGGETTI$=OGGETTISTANDARD$
  366. End If 
  367. Proc CARICAGLIOGGETTI
  368. Proc IMPOSTAGLIOGGETTI
  369. Proc IMPOSTAICOLORI
  370. Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1]
  371. Proc TROVAILFONTDATA70
  372. Proc DISSOLVENZADEICOLORI[$FFF,1,1]
  373. Hide 
  374. Proc IMPOSTALARCOBALENO
  375. Proc CARICAILLIVELLO
  376. Proc DABANCOAVARIABILI
  377. Proc METTIILPANNELLO
  378. Proc CREALEIMMAGINIPERLERIGHE
  379. Proc IMPOSTALEZONEDEIMATTONCINI
  380. Proc METTIECONTAIMATTONCINI
  381. Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1]
  382. Screen Swap 
  383. Proc DISSOLVENZADEICOLORI[$FFF,1,2]
  384. Proc IMPOSTALINGOMBRODELLABARRA
  385. Proc CARICAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
  386. Proc IMPOSTALADURATADELLERIGHE
  387. Proc IMPOSTAILAMPEGGI
  388. TESTOINTRODUTTIVO$="Press the M key if you want..."+ACAPO$
  389. TESTOINTRODUTTIVO$=TESTOINTRODUTTIVO$+"...to listen to the music only,"+ACAPO$
  390. TESTOINTRODUTTIVO$=TESTOINTRODUTTIVO$+"or press the S key if you want..."+ACAPO$
  391. TESTOINTRODUTTIVO$=TESTOINTRODUTTIVO$+"...to listen to the sound fxs only."
  392. Repeat 
  393.  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOINTRODUTTIVO$,20,22,1,500]
  394. Until TASTO=Asc("M") or TASTO=Asc("m") or TASTO=Asc("S") or TASTO=Asc("s")
  395. If TASTO=Asc("M") or TASTO=Asc("m")
  396.  Proc CARICAUNMODULOMED
  397.  If M0DULOMEDCARICATO=VERO
  398.   Proc SUONAILMODULOMED
  399.   EFFETTISONORICARICATI=0
  400.  Else 
  401.   Proc CARICAGLIEFFETTISONORI
  402.  End If 
  403. End If 
  404. If TASTO=Asc("S") or TASTO=Asc("s")
  405.  Proc CARICAGLIEFFETTISONORI
  406. End If 
  407. Repeat 
  408.  Proc MOSTRAICREDITI
  409.  Proc MOSTRAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
  410.  Proc MOSTRALEOPZIONIDIGIOCO
  411.  TESTOINTRODUTTIVO$="Press left mouse button to play."+ACAPO$
  412.  TESTOINTRODUTTIVO$=TESTOINTRODUTTIVO$+"Press right mouse button to exit."
  413.  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOINTRODUTTIVO$,20,21,1,500]
  414.  If TASTO=-1
  415.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
  416.   _BARRE=5
  417.   C0LLA=FALSO
  418.   DISTANZADELMATTONCINOPIUVICINOALPAPERO=1000
  419.   DURATADELLARIGA=-1
  420.   INIZIODELLIVELLO=VERO
  421.   LASER=0
  422.   LIVELLO=0
  423.   LUNGHEZZADELLABARRA=1
  424.   LUNGHEZZADELLABARRACAMBIATA=LUNGHEZZADELLABARRA
  425.   PALLINASCELTATADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
  426.   PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
  427.   PALLINEINCAMPO=1
  428.   _PAPEROINCAMPO=FALSO
  429.   PUNTEGGIO=0
  430.   RIGA=0
  431.   RIMBALZODELLEPALLINESUIMATTONCINI=VERO
  432.   TEMP0TRASCORSODIGIOCO=0
  433.   XBARRA=X Screen(X Mouse)
  434.   YBARRA=247
  435.   If PRIMAPARTITA=FALSO or LIVELLO>0
  436.    Proc CANCELLAIMATTONCINI
  437.    Proc CARICAILLIVELLO
  438.    Proc DABANCOAVARIABILI
  439.    Proc METTIECONTAIMATTONCINI
  440.    If M0DULOMEDCARICATO=VERO
  441.     Proc CARICAUNMODULOMED
  442.     Proc SUONAILMODULOMED
  443.    End If 
  444.   Else 
  445.    PRIMAPARTITA=FALSO
  446.   End If 
  447.   Repeat 
  448.    Proc IMPOSTAILRITARDODELLENTRATAINCAMPODELPAPEROALIENO
  449.    Proc IMPOSTAILRITARDODELLENTRATAINCAMPODELRUBAPALLINA
  450.    Proc AGGIORNAILPANNELLO
  451.    RITARDOMASSIMODELLABARRA=0
  452.    If INIZIODELLIVELLO=VERO
  453.     TESTOINIZIOGIOCO$="Get ready for level"+Str$(LIVELLO)+"!"+ACAPO$
  454.     TESTOINIZIOGIOCO$=TESTOINIZIOGIOCO$+"Press a (mouse) key to begin..."
  455.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1]
  456.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOINIZIOGIOCO$,22,20,1,500]
  457.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
  458.     Proc IMPOSTAIBOING
  459.     If EFFETTISONORICARICATI=2
  460.      Sam Play VOCE,1 : Proc VOCESEGUENTE
  461.     Else If EFFETTISONORICARICATI=1
  462.      Bell 20
  463.     End If 
  464.     INIZIODELLIVELLO=FALSO
  465.    End If 
  466.    For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  467.     If PALLINA<PALLINEINCAMPO
  468.      PALLINA(PALLINA)=VERO
  469.      XPALLINA#(PALLINA)=XBARRA+PALLINA*7-14
  470.      YPALLINA#(PALLINA)=YBARRA-4
  471.     Else 
  472.      PALLINA(PALLINA)=FALSO
  473.      Proc CANCELLALAPALLINA[PALLINA]
  474.     End If 
  475.    Next PALLINA
  476.    Autoback 1
  477.    Timer=DURATADELMOTIVODIFONDO+50*15
  478.    Repeat 
  479.     TASTOCLICCATODELTOPO=Mouse Click
  480.     If RITARDODELLABARRA=0 or RITARDOMASSIMODELLABARRA=0
  481.      XBARRA=X Screen(X Mouse)
  482.     End If 
  483.     If RITARDOMASSIMODELLABARRA>0
  484.      Add RITARDODELLABARRA,1,0 To RITARDOMASSIMODELLABARRA
  485.     End If 
  486.     Proc MOSTRALABARRA
  487.     Proc CAMBIALALUNGHEZZADELLABARRA
  488.     Proc LIMITAIMOVIMENTIDELLABARRA
  489.     For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  490.      If PALLINA(PALLINA)=VERO
  491.       XPALLINA#(PALLINA)=XBARRA+PALLINA*7-14
  492.       YPALLINA#(PALLINA)=YBARRA-4
  493.       Bob OGGETTOPALLINA+PALLINA,Int(XPALLINA#(PALLINA)),Int(YPALLINA#(PALLINA)),IMMAGINEPALLINA
  494.      End If 
  495.     Next PALLINA
  496.     Proc MOSTRAILLASER
  497.     If T0GLILARIGA>0
  498.      If XRIGA>0
  499.       Dec XRIGA
  500.      End If 
  501.      Proc MOSTRALARIGA[T0GLILARIGA]
  502.     Else 
  503.      If RIGA>0
  504.       If XRIGA<XFINALERIGA
  505.        Inc XRIGA
  506.        Proc MOSTRALARIGA[RIGA]
  507.       End If 
  508.      End If 
  509.     End If 
  510.     Proc MATTONCINIDIPOTENZIAMENTO[0,0]
  511.     Proc BOINGINCAMPO
  512.     If _PAPEROINCAMPO=VERO
  513.      Proc _PAPEROINCAMPO
  514.     End If 
  515.     If RITARDODELLENTRATAINCAMPODELPAPEROALIENO=0
  516.      Proc _PAPEROALIENOINCAMPO
  517.      Proc MOLLAILGUANO
  518.     Else 
  519.      Dec RITARDODELLENTRATAINCAMPODELPAPEROALIENO
  520.     End If 
  521.     If RITARDODELLENTRATAINCAMPODELRUBAPALLINA=1
  522.      ENTRATAINCAMPODELRUBAPALLINA=Rnd(2)>1
  523.     End If 
  524.     If RITARDODELLENTRATAINCAMPODELRUBAPALLINA=0
  525.      If ENTRATAINCAMPODELRUBAPALLINA=VERO
  526.       Proc RUBAPALLINAINCAMPO
  527.      End If 
  528.     Else 
  529.      Dec RITARDODELLENTRATAINCAMPODELRUBAPALLINA
  530.     End If 
  531.     If RITARDODELLENTRATAINCAMPODEINEMICI=0
  532.      If LASER>0
  533.       Proc NEMICIINCAMPO
  534.      Else 
  535.       Proc CANCELLAINEMICIUNO : RITARDODELLENTRATAINCAMPODEINEMICI=-3000
  536.      End If 
  537.     Else If RITARDODELLENTRATAINCAMPODEINEMICI<0
  538.      If RITARDODELLENTRATAINCAMPODEINEMICI=-1
  539.       Proc IMPOSTAINEMICIUNO
  540.      End If 
  541.      Inc RITARDODELLENTRATAINCAMPODEINEMICI
  542.     End If 
  543.     If COMPORTAMENTODEINEMICI=0
  544.      If RITARDODELLENTRATAINCAMPODEINEMICI=0
  545.       Proc ILNEMICOUNOHASPARATO[0]
  546.      Else 
  547.       If PROIETTILENEMICOUNO(0)>0
  548.        Proc ILNEMICOUNOHASPARATO[0]
  549.       End If 
  550.      End If 
  551.     End If 
  552.     Bob Update 
  553.     TASTOPREMUTO$=Lower$(Inkey$)
  554.     TASTOGRIGIO=Key Shift
  555.     TASTOSCANSITO=Scancode
  556.     Exit If TASTOPREMUTO$=Chr$(27)
  557.     If TASTOPREMUTO$="p"
  558.      Proc METTIILGIOCOINPAUSA
  559.     End If 
  560.     If TASTOGRIGIO=4
  561.      If TASTOSCANSITO=80 : Rem F1 key 
  562.       Add LUNGHEZZADELLABARRACAMBIATA,1,0 To 2
  563.      Else If TASTOSCANSITO=81 : Rem F2 key 
  564.       Add PALLINEINCAMPO,1,1 To MASSIMOPALLINEINCAMPO
  565.       For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  566.        If PALLINA<PALLINEINCAMPO
  567.         PALLINA(PALLINA)=VERO
  568.        Else 
  569.         PALLINA(PALLINA)=FALSO
  570.         Proc CANCELLALAPALLINA[PALLINA]
  571.        End If 
  572.       Next PALLINA
  573.      Else If TASTOSCANSITO=82 : Rem F3 key 
  574.       If LASER=-1
  575.        LASER=1
  576.       Else If LASER=1
  577.        LASER=2
  578.       Else If LASER=2
  579.        LASER=3
  580.       Else If LASER=3
  581.        LASER=0
  582.       End If 
  583.      Else If TASTOSCANSITO=83 : Rem F4 key 
  584.       If RIGA>0 and T0GLILARIGA=0
  585.        T0GLILARIGA=RIGA
  586.       End If 
  587.       Add RIGA,1,0 To 3
  588.      Else If TASTOSCANSITO=84 : Rem F5 Key 
  589.       RITARDODELLENTRATAINCAMPODELRUBAPALLINA=0
  590.       ENTRATAINCAMPODELRUBAPALLINA=VERO
  591.      Else If TASTOSCANSITO=85 : Rem F6 Key 
  592.       RITARDODELLENTRATAINCAMPODEINEMICI=-1
  593.      Else If TASTOPREMUTO$=" "
  594.       Proc MATTONCINIDIPOTENZIAMENTO[-Rnd(28)-1,0]
  595.      End If 
  596.     End If 
  597.     If MOTIVODIFONDOCARICATO=1
  598.      If Timer-DURATADELMOTIVODIFONDO>50*15
  599.       Proc SUONAILMOTIVODIFONDO : DURATADELMOTIVODIFONDO=Timer
  600.      End If 
  601.     End If 
  602.    Until TASTOCLICCATODELTOPO>0
  603.    Proc IMPOSTALEPALLINE
  604.    DURATADELGIOCO=0
  605.    Repeat 
  606.     TASTOCLICCATODELTOPO=Mouse Click
  607.     If TASTOCLICCATODELTOPO=1
  608.      For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  609.       LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=FALSO
  610.      Next PALLINA
  611.     Else If TASTOCLICCATODELTOPO=2
  612.      Proc HAISPARATOILRAGGIOLASER
  613.     End If 
  614.     If _BARRABLOCCATA>0
  615.      If _BARRABLOCCATA=1
  616.       X Mouse=X Hard(Int(XBARRA))
  617.      End If 
  618.      Dec _BARRABLOCCATA
  619.     Else 
  620.      If RITARDODELLABARRA=0 or RITARDOMASSIMODELLABARRA=0
  621.       XBARRA=X Screen(X Mouse)
  622.      End If 
  623.      If RITARDOMASSIMODELLABARRA>0
  624.       Add RITARDODELLABARRA,1,0 To RITARDOMASSIMODELLABARRA
  625.      End If 
  626.     End If 
  627.     Proc MOSTRALABARRA
  628.     Proc CAMBIALALUNGHEZZADELLABARRA
  629.     Proc LIMITAIMOVIMENTIDELLABARRA
  630.     For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  631.      If PALLINA(PALLINA)=VERO
  632.       If LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=VERO
  633.        XPALLINA#(PALLINA)=XBARRA-XCOLLA(PALLINA)
  634.        YPALLINA#(PALLINA)=YBARRA-YCOLLA(PALLINA)
  635.       Else 
  636.        XPALLINA#(PALLINA)=XPALLINA#(PALLINA)+DELTAXPALLINA#(PALLINA)
  637.        YPALLINA#(PALLINA)=YPALLINA#(PALLINA)+DELTAYPALLINA#(PALLINA)
  638.        If TILTPALLINA=VERO
  639.         XPALLINA#(PALLINA)=XPALLINA#(PALLINA)+XTILTPALLINA
  640.         YPALLINA#(PALLINA)=YPALLINA#(PALLINA)+YTILTPALLINA
  641.        End If 
  642.        If XPALLINA#(PALLINA)>XPANNELLO-4
  643.         XPALLINA#(PALLINA)=XPANNELLO-4
  644.         DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
  645.         If EFFETTISONORICARICATI=2
  646.          Sam Play VOCE,2,8363*2 : Proc VOCESEGUENTE
  647.         Else If EFFETTISONORICARICATI=1
  648.          Boom 
  649.         End If 
  650.        Else If XPALLINA#(PALLINA)<3
  651.         XPALLINA#(PALLINA)=3
  652.         DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
  653.         If EFFETTISONORICARICATI=2
  654.          Sam Play VOCE,2,8363*2 : Proc VOCESEGUENTE
  655.         Else If EFFETTISONORICARICATI=1
  656.          Boom 
  657.         End If 
  658.        Else If YPALLINA#(PALLINA)<3
  659.         YPALLINA#(PALLINA)=3
  660.         DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  661.         If EFFETTISONORICARICATI=2
  662.          Sam Play VOCE,2,8363*2 : Proc VOCESEGUENTE
  663.         Else If EFFETTISONORICARICATI=1
  664.          Boom 
  665.         End If 
  666.        End If 
  667.        If TILTPALLINA=VERO
  668.         Add XTILTPALLINA,-Sgn(XTILTPALLINA)
  669.         If XTILTPALLINA>0
  670.          XTILTPALLINA=Max(XTILTPALLINA,0)
  671.         Else If XTILTPALLINA<0
  672.          XTILTPALLINA=Min(XTILTPALLINA,0)
  673.         End If 
  674.         Add YTILTPALLINA,-Sgn(YTILTPALLINA)
  675.         If YTILTPALLINA>0
  676.          YTILTPALLINA=Max(YTILTPALLINA,0)
  677.         Else If YTILTPALLINA<0
  678.          YTILTPALLINA=Min(YTILTPALLINA,0)
  679.         End If 
  680.         Screen Display 0,128+XTILTPALLINA,44+YTILTPALLINA,320,256
  681.         If XTILTPALLINA=0 and YTILTPALLINA=0
  682.          TILTPALLINA=FALSO
  683.         End If 
  684.        Else 
  685.         If TASTOPREMUTO$=" "
  686.          XTILTPALLINA=Rnd(32)-16 : YTILTPALLINA=Rnd(32)-16 : TILTPALLINA=VERO
  687.         End If 
  688.        End If 
  689.       End If 
  690.       Bob OGGETTOPALLINA+PALLINA,Int(XPALLINA#(PALLINA)),Int(YPALLINA#(PALLINA)),IMMAGINEPALLINA
  691.       If LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=FALSO
  692.        Proc MATTONCINOCOLPITODALLAPALLINA[PALLINA]
  693.        Proc LAPALLINAHACOLPITOLABARRA[PALLINA]
  694.        Proc LAPALLINAHACOLPITOLARIGA[PALLINA]
  695.        Proc LAPALLINAEUSCITADALCAMPODIGIOCO[PALLINA]
  696.       End If 
  697.      End If 
  698.     Next PALLINA
  699.     Exit If TASTOPREMUTO$=Chr$(27)
  700.     TASTOPREMUTO$=Lower$(Inkey$)
  701.     Exit If TASTOPREMUTO$=Chr$(27)
  702.     If TASTOPREMUTO$="p"
  703.      Proc METTIILGIOCOINPAUSA
  704.     End If 
  705.     Proc MOSTRAILLASER
  706.     Proc MOSTRAILRAGGIOLASER
  707.     TASTOGRIGIO=Key Shift
  708.     SHIFTSINISTRO=Btst(0,TASTOGRIGIO)
  709.     SHIFTDESTRO=Btst(1,TASTOGRIGIO)
  710.     TASTOMAIUSCOLE=Btst(2,TASTOGRIGIO)
  711.     TASTISHIFTPREMUTI=SHIFTSINISTRO or SHIFTDESTRO or TASTOMAIUSCOLE
  712.     If TASTISHIFTPREMUTI=FALSO
  713.      Proc MATTONCINOCOLPITODALRAGGIOLASER
  714.     End If 
  715.     Proc LABARRAESTATACOLPITADALRAGGIOLASERRIFLESSO
  716.     If T0GLILARIGA>0
  717.      If XRIGA>0
  718.       Dec XRIGA : Proc MOSTRALARIGA[T0GLILARIGA]
  719.      Else 
  720.       Proc T0GLILARIGA : DURATADELLARIGA=-1
  721.      End If 
  722.     Else 
  723.      If RIGA>0
  724.       If XRIGA<XFINALERIGA
  725.        Inc XRIGA : Proc MOSTRALARIGA[RIGA]
  726.       Else 
  727.        If DURATADELLARIGA=-1
  728.         DURATADELLARIGA=DURATADELLARIGA(RIGA-1)
  729.        Else If DURATADELLARIGA=0
  730.         T0GLILARIGA=RIGA : RIGA=0
  731.        Else 
  732.         Dec DURATADELLARIGA
  733.        End If 
  734.       End If 
  735.      End If 
  736.     End If 
  737.     Proc MATTONCINIDIPOTENZIAMENTO[0,0]
  738.     Proc BOINGINCAMPO
  739.     If _PAPEROINCAMPO=VERO
  740.      Proc _PAPEROINCAMPO
  741.     End If 
  742.     If RITARDODELLENTRATAINCAMPODELPAPEROALIENO=0
  743.      Proc _PAPEROALIENOINCAMPO
  744.      Proc MOLLAILGUANO
  745.     Else 
  746.      Dec RITARDODELLENTRATAINCAMPODELPAPEROALIENO
  747.     End If 
  748.     If RITARDODELLENTRATAINCAMPODELRUBAPALLINA=1
  749.      ENTRATAINCAMPODELRUBAPALLINA=Rnd(2)>1
  750.     End If 
  751.     If RITARDODELLENTRATAINCAMPODELRUBAPALLINA=0
  752.      If ENTRATAINCAMPODELRUBAPALLINA=VERO
  753.       Proc RUBAPALLINAINCAMPO
  754.      End If 
  755.     Else 
  756.      Dec RITARDODELLENTRATAINCAMPODELRUBAPALLINA
  757.     End If 
  758.     If RITARDODELLENTRATAINCAMPODEINEMICI=0
  759.      If LASER>0
  760.       Proc NEMICIINCAMPO
  761.      Else 
  762.       Proc CANCELLAINEMICIUNO : RITARDODELLENTRATAINCAMPODEINEMICI=-3000
  763.      End If 
  764.     Else If RITARDODELLENTRATAINCAMPODEINEMICI<0
  765.      If RITARDODELLENTRATAINCAMPODEINEMICI=-1
  766.       Proc IMPOSTAINEMICIUNO
  767.      End If 
  768.      Inc RITARDODELLENTRATAINCAMPODEINEMICI
  769.     End If 
  770.     If COMPORTAMENTODEINEMICI=0 and NEMICOUNO(0)>0
  771.      If RITARDODELLENTRATAINCAMPODEINEMICI=0
  772.       Proc ILNEMICOUNOHASPARATO[0]
  773.      Else 
  774.       If PROIETTILENEMICOUNO(0)>0
  775.        Proc ILNEMICOUNOHASPARATO[0]
  776.       End If 
  777.      End If 
  778.     End If 
  779.     Bob Update 
  780.     For MATTONCINODARIDISEGNARE=0 To MASSIMOMATTONCINIDARIDISEGNARE-1
  781.      MATTONCINO=MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)
  782.      If MATTONCINO>0
  783.       X0MATTONCINO=X0ZONA(MATTONCINO-1)
  784.       Y0MATTONCINO=Y0ZONA(MATTONCINO-1)
  785.       If ESPLOSIONEMATTONCINO(MATTONCINO-1)>0
  786.        IMMAGINEESPLOSIONEMATTONCINO=IMMAGINEESPLOSIONEMATTONCINO(ESPLOSIONEMATTONCINO(MATTONCINO-1))
  787.        Ink 0 : Bar X0MATTONCINO,Y0MATTONCINO To X0MATTONCINO+19,Y0MATTONCINO+9
  788.        Paste Bob X0MATTONCINO,Y0MATTONCINO,IMMAGINEESPLOSIONEMATTONCINO
  789.        Inc ESPLOSIONEMATTONCINO(MATTONCINO-1)
  790.        If ESPLOSIONEMATTONCINO(MATTONCINO-1)=IMMAGINIESPLOSIONEMATTONCINO
  791.         ESPLOSIONEMATTONCINO(MATTONCINO-1)=0
  792.        End If 
  793.       Else 
  794.        If DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)>0
  795.         TIPODIMATTONCINO=MATTONCINO(MATTONCINO-1)
  796.         If TIPODIMATTONCINO=0
  797.          Ink 0 : Bar X0MATTONCINO,Y0MATTONCINO To X0MATTONCINO+19,Y0MATTONCINO+9
  798.         Else If TIPODIMATTONCINO>0
  799.          Paste Bob X0MATTONCINO,Y0MATTONCINO,82+TIPODIMATTONCINO
  800.         End If 
  801.         Dec DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)
  802.        Else 
  803.         MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=0
  804.         If TIPODIMATTONCINO=0 and MATTONCINO(MATTONCINO-1)=0
  805.          Ink 0 : Bar X0MATTONCINO,Y0MATTONCINO To X0MATTONCINO+19,Y0MATTONCINO+9
  806.          MATTONCINO(MATTONCINO-1)=-1
  807.         End If 
  808.        End If 
  809.       End If 
  810.      End If 
  811.     Next MATTONCINODARIDISEGNARE
  812.     If BONUS>0
  813.      If RITARDODELDECREMENTODELBONUS=9
  814.       RITARDODELDECREMENTODELBONUS=0 : Dec BONUS : Proc MOSTRAILBONUS[FALSO]
  815.      Else 
  816.       Inc RITARDODELDECREMENTODELBONUS
  817.      End If 
  818.     End If 
  819.     Exit If MATTONCINI=0
  820.     If RITARDODELGIOCO=1
  821.      Wait Vbl 
  822.     End If 
  823.     Inc DURATADELGIOCO
  824.     If MOTIVODIFONDOCARICATO=1
  825.      If Timer-DURATADELMOTIVODIFONDO>50*15
  826.       Proc SUONAILMOTIVODIFONDO : DURATADELMOTIVODIFONDO=Timer
  827.      End If 
  828.     End If 
  829.    Until PALLINEINCAMPO=0
  830.    Proc ANNULLAILRIDISEGNODEIMATTONCINI
  831.    Proc CANCELLALABARRA
  832.    Proc CANCELLALEPALLINE
  833.    Proc CANCELLAIMATTONCINIDIPOTENZIAMENTO[FALSO]
  834.    Proc T0GLIILLASER
  835.    Proc CANCELLAILRAGGIOLASER
  836.    Proc CANCELLAILRUBAPALLINA
  837.    Proc CANCELLAILPAPERO : _PAPEROINCAMPO=FALSO
  838.    Proc CANCELLAILPAPEROALIENO
  839.    Proc CANCELLAILGUANO
  840.    Proc CANCELLAIBOING
  841.    Proc CANCELLAINEMICIUNO
  842.    Proc CANCELLAIPROIETTILIDEINEMICIUNO
  843.    Proc CANCELLALARIGA
  844.    Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1]
  845.    Exit If TASTOPREMUTO$=Chr$(27)
  846.    Add TEMP0TRASCORSODIGIOCO,DURATADELGIOCO
  847.    If MATTONCINI=0
  848.     Proc AGGIUNGIALPUNTEGGIOILBONUS
  849.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
  850.     Proc AGGIORNAILPANNELLO
  851.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1]
  852.     Proc AGGIUNGIALPUNTEGGIOILBONUSPERIMATTONCINIRIMASTI
  853.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
  854.     Proc AGGIORNAILPANNELLO
  855.     DISTANZADELMATTONCINOPIUVICINOALPAPERO=1000
  856.     Inc LIVELLO
  857.     INIZIODELLIVELLO=VERO
  858.    End If 
  859.    If PALLINEINCAMPO>0
  860.     Proc CANCELLAIMATTONCINI
  861.     Proc CANCELLAIMATTONCINIDIPOTENZIAMENTO[VERO]
  862.     Proc CARICAILLIVELLO
  863.     Exit If LIVELLO<0
  864.     Proc DABANCOAVARIABILI
  865.     Proc METTIECONTAIMATTONCINI
  866.     If M0DULOMEDCARICATO=VERO
  867.      Proc CARICAUNMODULOMED
  868.      Proc SUONAILMODULOMED
  869.     End If 
  870.    Else 
  871.     C0LLA=FALSO
  872.     RIMBALZODELLEPALLINESUIMATTONCINI=VERO
  873.     If LASER>0
  874.      Dec LASER
  875.     End If 
  876.     If _BARRE>0
  877.      Dec _BARRE : PALLINEINCAMPO=1
  878.     End If 
  879.     If EFFETTISONORICARICATI=2
  880.      Sam Play VOCE,5 : Proc VOCESEGUENTE
  881.     Else If EFFETTISONORICARICATI=1
  882.      Boom 
  883.     End If 
  884.    End If 
  885.   Until _BARRE=0
  886.   Autoback 0
  887.   If TASTOPREMUTO$<>Chr$(27)
  888.    Proc AGGIUNGIALPUNTEGGIOILBONUSPERLEBARRERIMASTEAFINEGIOCO
  889.    Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
  890.    Proc AGGIORNAILPANNELLO
  891.    Proc FAIINSERIREALGIOCATOREILSUOPUNTEGGIO
  892.    Proc SALVAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
  893.    Proc CARICAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
  894.    Proc MOSTRAILTEMPOTRASCORSODIGIOCOESALUTAILGIOCATORE
  895.   End If 
  896.  End If 
  897. Until TASTO=-2
  898. If M0DULOMEDCARICATO=VERO Then Proc FERMAILMODULOMED
  899. Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
  900. Flash Off : Proc DISSOLVENZADEICOLORI[0,1,1]
  901. Autoback 1
  902. Proc T0GLIIMATTONCINI
  903. Proc T0GLIILPANNELLO
  904. Proc T0GLILARCOBALENO
  905. Show : Rainbow Del 0 : Screen Close 0 : Erase All : End 
  906. Procedure AGGIORNAILPANNELLO
  907.  'update the panel  
  908.  Proc MOSTRALEBARRERIMASTE
  909.  Proc MOSTRAILLIVELLO
  910.  Proc MOSTRALAPOSIZIONE
  911.  Proc MOSTRAILPUNTEGGIO[VERO]
  912.  Proc MOSTRAILPUNTEGGIOMASSIMO[VERO]
  913.  Proc MOSTRAILBONUS[VERO]
  914. End Proc
  915. Procedure AGGIUNGIALPUNTEGGIOILBONUS
  916.  'add the bonus to the score  
  917.  If BONUS>0
  918.   BONUS$="I am going to add the bonus points..."+ACAPO$
  919.   BONUS$=BONUS$+"...to your game points."+ACAPO$
  920.   BONUS$=BONUS$+"Wait for a moment, please..."
  921.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,22,20,1,-1]
  922.   Repeat 
  923.    TASTOPREMUTO$=Lower$(Inkey$)
  924.    If TASTOPREMUTO$="p"
  925.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
  926.     Proc METTIILGIOCOINPAUSA
  927.    End If 
  928.    Dec BONUS : Proc MOSTRAILBONUS[FALSO]
  929.    Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
  930.   Until BONUS=0
  931.  Else 
  932.   TASTOPREMUTO$=Lower$(Inkey$)
  933.   If TASTOPREMUTO$="p"
  934.    Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
  935.    Proc METTIILGIOCOINPAUSA
  936.   End If 
  937.   BONUS$="There are no bonus points..."+ACAPO$
  938.   BONUS$=BONUS$+"...to add to your game points."+ACAPO$
  939.   BONUS$=BONUS$+"I am sorry..."+ACAPO$
  940.   BONUS$=BONUS$+"...I wish a better luck for the next level."+ACAPO$
  941.   BONUS$=BONUS$+"Press a (mouse) key to continue..."
  942.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,21,20,1,1000]
  943.  End If 
  944. End Proc
  945. Procedure AGGIUNGIALPUNTEGGIOILBONUSPERIMATTONCINIRIMASTI
  946.  'add 2 points to the score for every brick left  
  947.  If MATTONCINIRIMASTI>0
  948.   BONUS$="I am going to add the bricks left bonus points..."+ACAPO$
  949.   BONUS$=BONUS$+"...to your game points,"+ACAPO$
  950.   BONUS$=BONUS$+"adding two points for each brick left."+ACAPO$
  951.   BONUS$=BONUS$+"There are"+Str$(MATTONCINIRIMASTI)+" bricks left..."+ACAPO$
  952.   BONUS$=BONUS$+"...wait for a moment, please..."
  953.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,22,20,1,-1]
  954.   Repeat 
  955.    TASTOPREMUTO$=Lower$(Inkey$)
  956.    If TASTOPREMUTO$="p"
  957.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
  958.     Proc METTIILGIOCOINPAUSA
  959.    End If 
  960.    Dec MATTONCINIRIMASTI
  961.    Add PUNTEGGIO,2 : Proc MOSTRAILPUNTEGGIO[VERO]
  962.   Until MATTONCINIRIMASTI=0
  963.  Else 
  964.   TASTOPREMUTO$=Lower$(Inkey$)
  965.   If TASTOPREMUTO$="p"
  966.    Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
  967.    Proc METTIILGIOCOINPAUSA
  968.   End If 
  969.   BONUS$="There are no bars left bonus points..."+ACAPO$
  970.   BONUS$=BONUS$+"...to add to your game points."+ACAPO$
  971.   BONUS$=BONUS$+"I am sorry..."+ACAPO$
  972.   BONUS$=BONUS$+"...I wish a better luck for the next level."+ACAPO$
  973.   BONUS$=BONUS$+"Press a (mouse) key to continue..."
  974.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,21,20,1,1000]
  975.  End If 
  976. End Proc
  977. Procedure AGGIUNGIALPUNTEGGIOILBONUSPERLEBARRERIMASTEAFINEGIOCO
  978.  'add 500 points to the score for every ball left at the end of the game  
  979.  If _BARRE>0
  980.   Repeat 
  981.    BONUS$="I am going to add the bars left bonus points..."+ACAPO$
  982.    BONUS$=BONUS$+"...to your game points,"+ACAPO$
  983.    BONUS$=BONUS$+"adding 500 points for each ball left."+ACAPO$
  984.    BONUS$=BONUS$+"There are"+Str$(_BARRE)+" ball(s) left..."+ACAPO$
  985.    BONUS$=BONUS$+"...wait for a moment, please..."
  986.    Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,22,20,1,-1]
  987.    TASTOPREMUTO$=Lower$(Inkey$)
  988.    If TASTOPREMUTO$="p"
  989.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
  990.     Proc METTIILGIOCOINPAUSA
  991.    End If 
  992.    Dec _BARRE : Proc MOSTRALEBARRERIMASTE
  993.    Add PUNTEGGIO,500 : Proc MOSTRAILPUNTEGGIO[VERO]
  994.    Sam Play VOCE,2 : Proc VOCESEGUENTE
  995.    _ASPETTA[50]
  996.   Until _BARRE=0
  997.  Else 
  998.   BONUS$="There are no balls left bonus points..."+ACAPO$
  999.   BONUS$=BONUS$+"...to add to your game points."+ACAPO$
  1000.   BONUS$=BONUS$+"I am sorry..."+ACAPO$
  1001.   BONUS$=BONUS$+"...I wish a better luck for the next game."+ACAPO$
  1002.   BONUS$=BONUS$+"Press a (mouse) key to continue..."
  1003.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,21,20,1,1000]
  1004.  End If 
  1005. End Proc
  1006. Procedure ANNULLAILRIDISEGNODEIMATTONCINI
  1007.  'stop the hitted bricks redrawing  
  1008.  For MATTONCINODARIDISEGNARE=0 To MASSIMOMATTONCINIDARIDISEGNARE-1
  1009.   If ESPLOSIONEMATTONCINO(MATTONCINODARIDISEGNARE)>0
  1010.    X0MATTONCINO=X0ZONA(MATTONCINODARIDISEGNARE)
  1011.    Y0MATTONCINO=Y0ZONA(MATTONCINODARIDISEGNARE)
  1012.          Ink 0 : Bar X0MATTONCINO,Y0MATTONCINO To X0MATTONCINO+19,Y0MATTONCINO+9
  1013.    ESPLOSIONEMATTONCINO(MATTONCINODARIDISEGNARE)=0
  1014.   Else 
  1015.    If MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)>0
  1016.     MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=0
  1017.    End If 
  1018.   End If 
  1019.  Next MATTONCINODARIDISEGNARE
  1020. End Proc
  1021. Procedure _ASPETTA[TEMP0DAASPETTARE]
  1022.  'wait for a (mouse or grey) key pressed: 
  1023.  ' if time to wait (TEMP0DAASPETTARE) is less than zero exit immediately; 
  1024.  ' if time to wait is equal to zero wait forever; 
  1025.  ' if time to wait is grater than zero wait the specified time. 
  1026.  TASTO=0 : TASTOSCANSITO=0 : Timer=0
  1027.  Repeat 
  1028.   TASTOPREMUTO$=Inkey$
  1029.   TASTOGRIGIO=Key Shift
  1030.   TASTOSCANSITO=Scancode
  1031.   TASTOPREMUTODELTOPO=Mouse Key
  1032.   If TASTOGRIGIO>0 and TASTOGRIGIO<>Key Shift
  1033.    Add TASTO,TASTOGRIGIO*256 : Exit 
  1034.   End If 
  1035.   If TASTOPREMUTODELTOPO>0 Then TASTO=-TASTOPREMUTODELTOPO : Exit 
  1036.   If TASTOPREMUTO$<>"" Then TASTO=Asc(TASTOPREMUTO$) : Exit 
  1037.   If TEMP0DAASPETTARE>0 Then TEMP0TRASCORSO=Timer
  1038.   If TEMP0DAASPETTARE<0 Then Pop Proc
  1039.  Until TEMP0TRASCORSO>TEMP0DAASPETTARE
  1040. End Proc
  1041. Procedure BOINGINCAMPO
  1042.  'manage the boings 
  1043.  For BOING=0 To MASSIMOBOINGINCAMPO-1
  1044.   If BOING(BOING)>0
  1045.    If RITARDOBOING=0
  1046.     If BOINGMORTALE(BOING)=VERO
  1047.      If BOING(BOING)<14
  1048.       IMMAGINEBOINGMORTALE=BOING(BOING)-1
  1049.      Else If BOING(BOING)>13 and BOING(BOING)<39
  1050.       IMMAGINEBOINGMORTALE=13
  1051.      Else 
  1052.       IMMAGINEBOINGMORTALE=BOING(BOING)-26
  1053.      End If 
  1054.      Bob OGGETTOBOING+BOING,XBOING(BOING),YBOING(BOING),IMMAGINEBOINGMORTALE(IMMAGINEBOINGMORTALE)
  1055.     Else 
  1056.      Bob OGGETTOBOING+BOING,XBOING(BOING),YBOING(BOING),IMMAGINEBOING(BOING(BOING)-1)
  1057.     End If 
  1058.     Add XBOING(BOING),Rnd(4)-2
  1059.     Proc LIMITI[XBOING(BOING),0,XFINALERIGA] : XBOING(BOING)=Param
  1060.     Inc YBOING(BOING)
  1061.     If BOINGMORTALE(BOING)=VERO
  1062.      Add BOING(BOING),ROTAZIONEBOING(BOING),1 To 52
  1063.     Else 
  1064.      Add BOING(BOING),ROTAZIONEBOING(BOING),1 To 8
  1065.     End If 
  1066.    End If 
  1067.    Proc ILBOINGESTATOCOLPITO[BOING]
  1068.    Proc ILBOINGEUSCITODALCAMPODIGIOCO[BOING]
  1069.   Else If BOING(BOING)=0
  1070.    XBOING(BOING)=Rnd(XFINALERIGA) : YBOING(BOING)=-9 : BOINGMORTALE=Rnd(1)
  1071.    If BOINGMORTALE=1
  1072.     BOING(BOING)=Rnd(51)+1 : BOINGMORTALE(BOING)=VERO
  1073.    Else 
  1074.     BOING(BOING)=Rnd(7)+1 : BOINGMORTALE(BOING)=FALSO
  1075.    End If 
  1076.    ROTAZIONEBOING(BOING)=Rnd(1)
  1077.    If ROTAZIONEBOING(BOING)=0
  1078.     ROTAZIONEBOING(BOING)=-1
  1079.    End If 
  1080.    If EFFETTISONORICARICATI=2
  1081.     Sam Play VOCE,10 : Proc VOCESEGUENTE
  1082.    Else If EFFETTISONORICARICATI=1
  1083.     Bell 60
  1084.    End If 
  1085.   Else If BOING(BOING)<0
  1086.    If BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING
  1087.     Proc CANCELLAILBOING[BOING] : Inc BOING(BOING)
  1088.    Else 
  1089.     Inc BOING(BOING)
  1090.    End If 
  1091.   End If 
  1092.  Next BOING
  1093.  Add RITARDOBOING,1,0 To 3
  1094. End Proc
  1095. Procedure CAMBIALALUNGHEZZADELLABARRA
  1096.  'change the bar size 
  1097.  If LUNGHEZZADELLABARRACAMBIATA<>LUNGHEZZADELLABARRA
  1098.   If LUNGHEZZADELLABARRA=0
  1099.    If LUNGHEZZADELLABARRACAMBIATA=1
  1100.     Gosub LUNGHEZZADAZEROAUNO
  1101.    End If 
  1102.    If LUNGHEZZADELLABARRACAMBIATA=2
  1103.     Gosub LUNGHEZZADAZEROAUNO
  1104.     Gosub LUNGHEZZADAUNOADUE
  1105.    End If 
  1106.   Else If LUNGHEZZADELLABARRA=1
  1107.    If LUNGHEZZADELLABARRACAMBIATA=0
  1108.     Gosub LUNGHEZZADAUNOAZERO
  1109.    End If 
  1110.    If LUNGHEZZADELLABARRACAMBIATA=2
  1111.     Gosub LUNGHEZZADAUNOADUE
  1112.    End If 
  1113.   Else If LUNGHEZZADELLABARRA=2
  1114.    If LUNGHEZZADELLABARRACAMBIATA=0
  1115.     Gosub LUNGHEZZADADUEAUNO
  1116.     Gosub LUNGHEZZADAUNOAZERO
  1117.    End If 
  1118.    If LUNGHEZZADELLABARRACAMBIATA=1
  1119.     Gosub LUNGHEZZADADUEAUNO
  1120.    End If 
  1121.   End If 
  1122.  End If 
  1123.  LUNGHEZZADELLABARRA=LUNGHEZZADELLABARRACAMBIATA
  1124.  Pop Proc
  1125.  LUNGHEZZADAZEROAUNO:
  1126.  'from small to medium bar  
  1127.  For OGGETTO=45 To 41 Step -1
  1128.   Bob OGGETTOCENTRODELLABARRA,Int(XBARRA),YBARRA,OGGETTO
  1129.   Bob OGGETTOLATIDELLABARRA,Int(XBARRA),YBARRA,OGGETTO+5
  1130.   Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
  1131.   Bob Update 
  1132.  Next OGGETTO
  1133.  Return 
  1134.  LUNGHEZZADAUNOADUE:
  1135.  'from medium to large bar  
  1136.  For OGGETTO=13 To 26
  1137.   Bob OGGETTOCENTRODELLABARRA,Int(XBARRA),YBARRA,OGGETTO
  1138.   Bob OGGETTOLATIDELLABARRA,Int(XBARRA),YBARRA,OGGETTO+14
  1139.   Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
  1140.   Bob Update 
  1141.  Next OGGETTO
  1142.  Return 
  1143.  LUNGHEZZADADUEAUNO:
  1144.  'from large to medium bar  
  1145.  For OGGETTO=26 To 13 Step -1
  1146.   Bob OGGETTOCENTRODELLABARRA,Int(XBARRA),YBARRA,OGGETTO
  1147.   Bob OGGETTOLATIDELLABARRA,Int(XBARRA),YBARRA,OGGETTO+14
  1148.   Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
  1149.   Bob Update 
  1150.  Next OGGETTO
  1151.  Return 
  1152.  LUNGHEZZADAUNOAZERO:
  1153.  'from medium to small bar  
  1154.  For OGGETTO=41 To 45
  1155.   Bob OGGETTOCENTRODELLABARRA,Int(XBARRA),YBARRA,OGGETTO
  1156.   Bob OGGETTOLATIDELLABARRA,Int(XBARRA),YBARRA,OGGETTO+5
  1157.   Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
  1158.   Bob Update 
  1159.  Next OGGETTO
  1160.  Return 
  1161. End Proc
  1162. Procedure CANCELLAIBOING
  1163.  'turn off all the boings 
  1164.  For BOING=0 To MASSIMOBOINGINCAMPO-1
  1165.   Bob Off OGGETTOBOING+BOING
  1166.  Next BOING
  1167.  Bob Update 
  1168. End Proc
  1169. Procedure CANCELLAILBOING[BOING]
  1170.  'turn off the specified boing  
  1171.  Bob Off OGGETTOBOING+BOING
  1172.  Bob Update 
  1173. End Proc
  1174. Procedure CANCELLAILGUANO
  1175.  Bob Off OGGETTOGUANO
  1176.  Bob Update 
  1177.  GUANOMOLLATO=FALSO
  1178.  GUANOINCAMPO=FALSO
  1179. End Proc
  1180. Procedure CANCELLAILMATTONCINODIPOTENZIAMENTO[MATTONCINODIPOTENZIAMENTO]
  1181.  'turn off the specified bonus brick  
  1182.  Bob Off OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO
  1183.  Bob Update 
  1184.  MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=0
  1185. End Proc
  1186. Procedure CANCELLAILNEMICOUNO[NEMICOUNO]
  1187.  'turn off the specified enemy one
  1188.  Bob Off OGGETTONEMICOUNO+NEMICOUNO
  1189.  Bob Update 
  1190. End Proc
  1191. Procedure CANCELLAILPAPERO
  1192.  'turn off the duck 
  1193.  Bob Off OGGETTOPAPERO
  1194.  Bob Update 
  1195. End Proc
  1196. Procedure CANCELLAILPAPEROALIENO
  1197.  'turn off the alien duck 
  1198.  Bob Off OGGETTOPAPEROALIENO
  1199.  Bob Update 
  1200.  _PAPEROALIENO=0
  1201.  _PAPEROALIENOINCAMPO=FALSO
  1202. End Proc
  1203. Procedure CANCELLAILPROIETTILEDELNEMICOUNO[NEMICOUNO]
  1204.  'turn off the enemy one bullet 
  1205.  Bob Off OGGETTOPROIETTILENEMICOUNO+NEMICOUNO
  1206.  Bob Update 
  1207. End Proc
  1208. Procedure CANCELLAILRAGGIOLASER
  1209.  'turn off the laser ray  
  1210.  Bob Off OGGETTORAGGIOLASER
  1211.  Bob Update 
  1212.  RAGGIOLASERSPARATO=FALSO
  1213. End Proc
  1214. Procedure CANCELLAILRUBAPALLINA
  1215.  'turn off the ballthief  
  1216.  Bob Off OGGETTORUBAPALLINA
  1217.  Bob Update 
  1218.  Proc IMPOSTAILRITARDODELLENTRATAINCAMPODELRUBAPALLINA
  1219.  PALLINASCELTADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
  1220. End Proc
  1221. Procedure CANCELLAIMATTONCINI
  1222.  'clear the bricks area   
  1223.  Cls 0,0,0 To XPANNELLO,Screen Height
  1224.  Screen Swap 
  1225.  Cls 0,0,0 To XPANNELLO,Screen Height
  1226.  Screen Swap 
  1227. End Proc
  1228. Procedure CANCELLAIMATTONCINIDIPOTENZIAMENTO[M0DO]
  1229.  'turn off all the bonus bricks 
  1230.  For MATTONCINODIPOTENZIAMENTO=0 To MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1
  1231.   If MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)>0
  1232.    Bob Off OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO
  1233.   End If 
  1234.   If M0DO=VERO Then MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=0
  1235.  Next MATTONCINODIPOTENZIAMENTO
  1236.  Bob Update 
  1237. End Proc
  1238. Procedure CANCELLAINEMICIUNO
  1239.  'turn off the enemies one
  1240.  For NEMICOUNO=0 To MASSIMONEMICIUNOINCAMPO-1
  1241.   Bob Off OGGETTONEMICOUNO+NEMICOUNO
  1242.  Next NEMICOUNO
  1243.  Bob Update 
  1244. End Proc
  1245. Procedure CANCELLAIPROIETTILIDEINEMICIUNO
  1246.  'turn off the enemies one bullets  
  1247.  For NEMICOUNO=0 To MASSIMONEMICIUNOINCAMPO-1
  1248.   Bob Off OGGETTOPROIETTILENEMICOUNO+NEMICOUNO
  1249.  Next NEMICOUNO
  1250.  Bob Update 
  1251. End Proc
  1252. Procedure CANCELLALABARRA
  1253.  'turn off the bar  
  1254.  Bob Off OGGETTOCENTRODELLABARRA
  1255.  Bob Off OGGETTOLATIDELLABARRA
  1256.  Bob Update 
  1257. End Proc
  1258. Procedure CANCELLALAPALLINA[PALLINA]
  1259.  'turn off the specified ball   
  1260.  Bob Off OGGETTOPALLINA+PALLINA
  1261.  Bob Update 
  1262. End Proc
  1263. Procedure CANCELLALARIGA
  1264.  'turn off the row  
  1265.  If RIGA>0
  1266.   T0GLILARIGA=RIGA : RIGA=0
  1267.  End If 
  1268.  For XRIGA=XRIGA To 0 Step -1
  1269.   Proc MOSTRALARIGA[T0GLILARIGA] : Wait Vbl 
  1270.  Next XRIGA
  1271.  DURATADELLARIGA=-1
  1272. End Proc
  1273. Procedure CANCELLALEPALLINE
  1274.  'turn off all the balls  
  1275.  For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  1276.   Bob Off OGGETTOPALLINA+PALLINA
  1277.  Next PALLINA
  1278.  Bob Update 
  1279. End Proc
  1280. Procedure CARICAGLIEFFETTISONORI
  1281.  'load the sounds 
  1282.  If Chip Free<387662
  1283.   EFFETTISONORICARICATI=1
  1284.  Else 
  1285.   Load PERCORSODELLAMUSICA$+EFFETTISONORI$
  1286.   EFFETTISONORICARICATI=2
  1287.  End If 
  1288. End Proc
  1289. Procedure CARICAGLIOGGETTI
  1290.  'load the objects  
  1291.  Load PERCORSODELLAGRAFICA$+OGGETTI$
  1292. End Proc
  1293. Procedure CARICAILLIVELLO
  1294.  'load the level  
  1295.  LIVELLO$="Livello"+Str$(LIVELLO)-" "
  1296.  FILE$=PERCORSODEILIVELLI$+LIVELLO$
  1297.  If Exist(FILE$)
  1298.   Open In 1,FILE$
  1299.   MARCATORE$=Input$(1,9)
  1300.   LUNGHEZZABANCO=Lof(1)
  1301.   Close 1
  1302.   If MARCATORE$="Mattonite"
  1303.    Reserve As Work BANCODELLIVELLO,LUNGHEZZABANCO
  1304.    Bload FILE$,Start(BANCODELLIVELLO)
  1305.   End If 
  1306.  Else 
  1307.   LIVELLO= Not LIVELLO+1
  1308.  End If 
  1309. End Proc
  1310. Procedure CARICAUNMODULOMED
  1311.  'load the med module if there is space 
  1312.  Erase BANCODELMODULOMED
  1313.  M0DULOMEDCARICATO=Rnd(1)+1
  1314.  If M0DULOMEDCARICATO=1
  1315.   If Chip Free<107376
  1316.    M0DULOMEDCARICATO=FALSO
  1317.   Else 
  1318.    Med Load PERCORSODELLAMUSICA$+M0DULOMEDUNO$,BANCODELMODULOMED
  1319.    M0DULOMEDCARICATO=VERO
  1320.   End If 
  1321.  Else If M0DULOMEDCARICATO=2
  1322.   If Chip Free<119072
  1323.    M0DULOMEDCARICATO=FALSO
  1324.   Else 
  1325.    Med Load PERCORSODELLAMUSICA$+M0DULOMEDDUE$,BANCODELMODULOMED
  1326.    M0DULOMEDCARICATO=VERO
  1327.   End If 
  1328.  End If 
  1329. End Proc
  1330. Procedure CARICAILMOTIVODIFONDO
  1331.  'load the background motive
  1332.  MOTIVODIFONDO$="FunkFloor.8svx"
  1333.  FILE$=PERCORSODELLAMUSICA$+MOTIVODIFONDO$
  1334.  If Exist(FILE$)
  1335.   Open In 1,FILE$
  1336.   LUNGHEZZABANCO=Max(Lof(1),512)
  1337.   Close 1
  1338.   MEMORIA=Chip Free+Fast Free
  1339.   If LUNGHEZZABANCO>MEMORIA
  1340.    Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
  1341.    SENZAMEMORIA$="There is no enough memory"+ACAPO$
  1342.    SENZAMEMORIA$=SENZAMEMORIA$+"to load the background music."+ACAPO$
  1343.    SENZAMEMORIA$=SENZAMEMORIA$+"Press a (mouse) key to continue..."
  1344.    Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[SENZAMEMORIA$,21,20,1,250]
  1345.    Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
  1346.    Put Block 2
  1347.    MOTIVODIFONDOCARICATO=0
  1348.   Else 
  1349.    Reserve As Work BANCOTEMPORANEO,LUNGHEZZABANCO
  1350.    Bload FILE$,Start(BANCOTEMPORANEO)
  1351.    SEPARATORE=Instr(FILE$,":") : POSIZIONECARATTERE=1
  1352.    For A=1 To Len(FILE$)
  1353.     If Instr(FILE$,"/",POSIZIONE)>0
  1354.      SEPARATORECASSETTO=Instr(FILE$,"/",POSIZIONECARATTERE)
  1355.      POSIZIONECARATTERE=SEPARATORECASSETTO+1
  1356.     End If 
  1357.    Next A
  1358.    SEPARATORE=Max(SEPARATORE,SEPARATORECASSETTO)
  1359.    PERCORSO$=Left$(FILE$,SEPARATORE)
  1360.    If Right$(PERCORSO$,1)="/"
  1361.     PERCORSO$=Left$(PERCORSO$,Len(PERCORSO$)-1)
  1362.    End If 
  1363.    NOMEFILE$=Right$(FILE$,Len(FILE$)-SEPARATORE)
  1364.    MOTIVODIFONDOCARICATO=1
  1365.   End If 
  1366.  Else 
  1367.   Get Block 2,0,0,Screen Width,Screen Height
  1368.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
  1369.   NONTROVOILMOTIVODIFONDO$="I cannot find the background music."+ACAPO$
  1370.   NONTROVOILMOTIVODIFONDO$=NONTROVOILMOTIVODIFONDO$+"Press a (mouse) key to continue..."
  1371.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[NONTROVOILMOTIVODIFONDO$,21,20,1,250]
  1372.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
  1373.   Put Block 2
  1374.   MOTIVODIFONDOCARICATO=0
  1375.  End If 
  1376. End Proc
  1377. Procedure CARICAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
  1378.  'load the top hundred scores 
  1379.  If Exist(PUNTEGGI$)
  1380.   CENTOGIOCATORI$=""
  1381.   Open In 1,PUNTEGGI$
  1382.   For POSIZIONE=0 To 99
  1383.    Exit If Eof(1)
  1384.    Input #1,NOMEDELGIOCATORE$(POSIZIONE)
  1385.    CENTOGIOCATORI$=CENTOGIOCATORI$+"<"+Str$(POSIZIONE+1)-" "+"> "
  1386.    CENTOGIOCATORI$=CENTOGIOCATORI$+NOMEDELGIOCATORE$(POSIZIONE)+ACAPO$
  1387.    Input #1,PUNTEGGIODELGIOCATORE$(POSIZIONE)
  1388.    CENTOGIOCATORI$=CENTOGIOCATORI$+PUNTEGGIODELGIOCATORE$(POSIZIONE)
  1389.    CENTOGIOCATORI$=CENTOGIOCATORI$+" points up to level "
  1390.    Input #1,LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONE)
  1391.    CENTOGIOCATORI$=CENTOGIOCATORI$+LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONE)
  1392.    If Not Eof(1)
  1393.     CENTOGIOCATORI$=CENTOGIOCATORI$+ACAPO$
  1394.    End If 
  1395.   Next POSIZIONE
  1396.   Close 1
  1397.   PUNTEGGIOMASSIMO=Val(PUNTEGGIODELGIOCATORE$(0))
  1398.   Inc POSIZIONE
  1399.  End If 
  1400. End Proc
  1401. Procedure CARICARAWOIFF
  1402.  'recognize between raw or iff sample giving a sample in bank ready to be used  
  1403.  INDIRIZZO=Start(BANCOTEMPORANEO)+8
  1404.  If Peek$(INDIRIZZO,4)="8SVX"
  1405.   Add INDIRIZZO,12
  1406.   LUNGHEZZABANCO=Leek(INDIRIZZO)
  1407.   If LUNGHEZZABANCO=0
  1408.    Add INDIRIZZO,4
  1409.    LUNGHEZZABANCO=Leek(INDIRIZZO)
  1410.   Else 
  1411.    Add INDIRIZZO,4
  1412.   End If 
  1413.   Add INDIRIZZO,8
  1414.   FREQUENZA=Deek(INDIRIZZO)
  1415.   Add INDIRIZZO,8
  1416.   If Peek$(INDIRIZZO,4)="NAME"
  1417.    Add INDIRIZZO,4
  1418.    DATO=Leek(INDIRIZZO)
  1419.    Add INDIRIZZO,4+DATO
  1420.   End If 
  1421.   If Peek$(INDIRIZZO,4)="ANNO"
  1422.    Add INDIRIZZO,4
  1423.    DATO=Leek(INDIRIZZO)
  1424.    Add INDIRIZZO,4
  1425.    ANNOTAZIONI$=Peek$(INDIRIZZO,DATO)-Chr$(0)
  1426.    Add INDIRIZZO,DATO
  1427.   End If 
  1428.   If Peek$(INDIRIZZO,4)="BODY"
  1429.    Add INDIRIZZO,4
  1430.    LUNGHEZZADATI=Leek(INDIRIZZO)
  1431.    Add INDIRIZZO,4
  1432.    LUNGHEZZABANCO=Max(LUNGHEZZABANCO,LUNGHEZZADATI)
  1433.    Reserve As Chip Work BANCODELMOTIVODIFONDO,LUNGHEZZABANCO
  1434.    Copy INDIRIZZO,INDIRIZZO+LUNGHEZZABANCO-1 To Start(BANCODELMOTIVODIFONDO)
  1435.   Else 
  1436.    ANOMALOIFF$="The file loaded is an abnormal IFF sound."+ACAPO$
  1437.    ANOMALOIFF$=ANOMALOIFF$+"Press a (mouse) key to continue..."
  1438.    Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[SENZAMEMORIA$,21,20,1,250]
  1439.    NOMEFILE$=""
  1440.   End If 
  1441.  Else 
  1442.   LUNGHEZZABANCO=Length(BANCOTEMPORANEO)
  1443.   Reserve As Chip Work BANCODELMOTIVODIFONDO,LUNGHEZZABANCO
  1444.   Copy Start(BANCOTEMPORANEO),Start(BANCOTEMPORANEO)+LUNGHEZZABANCO-1 To Start(BANCODELMOTIVODIFONDO)
  1445.  End If 
  1446.  Erase BANCOTEMPORANEO
  1447. End Proc
  1448. Procedure CREALEIMMAGINIPERLERIGHE
  1449.  'create the row images 
  1450.  XFINALERIGA=XPANNELLO-1
  1451.  IMMAGINERIGAUNO=IMMAGINEPALLINA+1
  1452.  Ink 20 : Bar 0,251 To XFINALERIGA,255
  1453.  Get Bob IMMAGINERIGAUNO,0,251 To XFINALERIGA+1,255+1
  1454.  Hot Spot IMMAGINERIGAUNO,XFINALERIGA,0
  1455.  IMMAGINERIGADUE=IMMAGINERIGAUNO+1
  1456.  Ink 21 : Bar 0,251 To XFINALERIGA,255
  1457.  Get Bob IMMAGINERIGADUE,0,251 To XFINALERIGA+1,255+1
  1458.  Hot Spot IMMAGINERIGADUE,XFINALERIGA,0
  1459.  IMMAGINERIGATRE=IMMAGINERIGADUE+1
  1460.  Ink 22 : Bar 0,251 To XFINALERIGA,255
  1461.  Get Bob IMMAGINERIGATRE,0,251 To XFINALERIGA+1,255+1
  1462.  Hot Spot IMMAGINERIGATRE,XFINALERIGA,0
  1463.  Ink 0 : Bar 0,251 To XFINALERIGA,255
  1464. End Proc
  1465. Procedure CREATESTOBORDATO[XTESTO,YTESTO,TESTO$,C0LORETESTO,C0LOREBORDO]
  1466.  'create outlined text  
  1467.  Ink C0LOREBORDO
  1468.  Text XTESTO,YTESTO-1,TESTO$
  1469.  Text XTESTO+1,YTESTO-1,TESTO$
  1470.  Text XTESTO+1,YTESTO,TESTO$
  1471.  Text XTESTO+1,YTESTO+1,TESTO$
  1472.  Text XTESTO,YTESTO+1,TESTO$
  1473.  Text XTESTO-1,YTESTO+1,TESTO$
  1474.  Text XTESTO-1,YTESTO,TESTO$
  1475.  Text XTESTO-1,YTESTO-1,TESTO$
  1476.  Ink C0LORETESTO
  1477.  Text XTESTO,YTESTO,TESTO$
  1478. End Proc
  1479. Procedure DABANCOAVARIABILI
  1480.  'copy from bank to variables 
  1481.  If Length(BANCODELLIVELLO)>0
  1482.   INDIRIZZO=Start(BANCODELLIVELLO)+9
  1483.   For A=0 To 246
  1484.    MATTONCINO(A)=Peek(INDIRIZZO)
  1485.    Inc INDIRIZZO
  1486.   Next A
  1487.   For A=0 To 255
  1488.    ARCOBALENO=Peek(INDIRIZZO)
  1489.    Inc INDIRIZZO
  1490.    ARCOBALENO=ARCOBALENO+Peek(INDIRIZZO)*$100
  1491.    Rain(0,A)=ARCOBALENO : Rainbow 0,257,0,271
  1492.    Wait Vbl 
  1493.    Inc INDIRIZZO
  1494.   Next A
  1495.   BONUS=Peek(INDIRIZZO)
  1496.   Inc INDIRIZZO
  1497.   Add BONUS,Peek(INDIRIZZO)*100
  1498.   Inc INDIRIZZO
  1499.   Add BONUS,Peek(INDIRIZZO)*10000
  1500.   Inc INDIRIZZO
  1501.   Add BONUS,Peek(INDIRIZZO)*1000000
  1502.   Inc INDIRIZZO
  1503.  End If 
  1504.  Erase BANCODELLIVELLO
  1505. End Proc
  1506. Procedure DISSOLVENZADEICOLORI[C0LORE,VELOCITA,M0DO]
  1507.  'fade the colours  
  1508.  If M0DO=0
  1509.   For C=0 To C0LORIDELLOSCHERMOMENOUNO
  1510.    Colour C,C0LORE
  1511.    If VELOCITA>0
  1512.     Wait VELOCITA
  1513.    End If 
  1514.   Next C
  1515.  Else 
  1516.   Dim ROSSO(C0LORIDELLOSCHERMOMENOUNO),VERDE(C0LORIDELLOSCHERMOMENOUNO),BLU(C0LORIDELLOSCHERMOMENOUNO)
  1517.   Dim ROSSOFINALE(C0LORIDELLOSCHERMOMENOUNO),VERDEFINALE(C0LORIDELLOSCHERMOMENOUNO),BLUFINALE(C0LORIDELLOSCHERMOMENOUNO)
  1518.   Dim ROSSODISSOLTO(C0LORIDELLOSCHERMOMENOUNO),VERDEDISSOLTO(C0LORIDELLOSCHERMOMENOUNO),BLUDISSOLTO(C0LORIDELLOSCHERMOMENOUNO)
  1519.   For C=0 To C0LORIDELLOSCHERMOMENOUNO
  1520.    If M0DO=1
  1521.     ROSSOFINALE(C)=C0LORE/256
  1522.     VERDEFINALE(C)=C0LORE/16 mod 16
  1523.     BLUFINALE(C)=C0LORE mod 16
  1524.    Else If M0DO=2
  1525.     ROSSOFINALE(C)=C0LORE(C)/256
  1526.     VERDEFINALE(C)=C0LORE(C)/16 mod 16
  1527.     BLUFINALE(C)=C0LORE(C) mod 16
  1528.    End If 
  1529.    ROSSO(C)=Colour(C)/256
  1530.    VERDE(C)=Colour(C)/16 mod 16
  1531.    BLU(C)=Colour(C) mod 16
  1532.   Next C
  1533.   Repeat 
  1534.    For C=0 To C0LORIDELLOSCHERMOMENOUNO
  1535.     If ROSSODISSOLTO(C)=FALSO
  1536.      If ROSSO(C)<ROSSOFINALE(C)
  1537.       Inc ROSSO(C)
  1538.      Else If ROSSO(C)=ROSSOFINALE(C)
  1539.       ROSSODISSOLTO(C)=VERO
  1540.      Else If ROSSO(C)>ROSSOFINALE(C)
  1541.       Dec ROSSO(C)
  1542.      End If 
  1543.     End If 
  1544.     If VERDEDISSOLTO(C)=FALSO
  1545.      If VERDE(C)<VERDEFINALE(C)
  1546.       Inc VERDE(C)
  1547.      Else If VERDE(C)=VERDEFINALE(C)
  1548.       VERDEDISSOLTO(C)=VERO
  1549.      Else If VERDE(C)>VERDEFINALE(C)
  1550.       Dec VERDE(C)
  1551.      End If 
  1552.     End If 
  1553.     If BLUDISSOLTO(C)=FALSO
  1554.      If BLU(C)<BLUFINALE(C)
  1555.       Inc BLU(C)
  1556.      Else If BLU(C)=BLUFINALE(C)
  1557.       BLUDISSOLTO(C)=VERO
  1558.      Else If BLU(C)>BLUFINALE(C)
  1559.       Dec BLU(C)
  1560.      End If 
  1561.     End If 
  1562.     Colour C,ROSSO(C)*256+VERDE(C)*16+BLU(C)
  1563.     If C=0
  1564.      C0LORIDISSOLTI=0
  1565.     End If 
  1566.     If ROSSODISSOLTO(C)=VERO
  1567.      If VERDEDISSOLTO(C)=VERO
  1568.       If BLUDISSOLTO(C)=VERO
  1569.        Inc C0LORIDISSOLTI
  1570.       End If 
  1571.      End If 
  1572.     End If 
  1573.    Next C
  1574.    If VELOCITA>0
  1575.     Wait VELOCITA
  1576.    End If 
  1577.   Until C0LORIDISSOLTI=C0LORIDELLOSCHERMOMENOUNO+1
  1578.  End If 
  1579. End Proc
  1580. Procedure FAIINSERIREALGIOCATOREILSUOPUNTEGGIO
  1581.  'let the player type his/her name and then insert this and the and score in the  
  1582.  ' the top hundred scores 
  1583.  GIOCATORE$="Anonymous"
  1584.  Repeat 
  1585.   MESSAGGIO$=""
  1586.   MESSAGGIO$=MESSAGGIO$+"You have entered the Top Hundred Scores..."+ACAPO$
  1587.   MESSAGGIO$=MESSAGGIO$+"...at position"+Str$(POSIZIONE)+"."+ACAPO$
  1588.   MESSAGGIO$=MESSAGGIO$+"Please backspace the Anonymous player..."+ACAPO$
  1589.   MESSAGGIO$=MESSAGGIO$+"...and type your name; press Return when done."+ACAPO$
  1590.   MESSAGGIO$=MESSAGGIO$+"Press the Esc key to undo the saving of your"+ACAPO$
  1591.   MESSAGGIO$=MESSAGGIO$+"name and score in the top hundred list."+ACAPO$
  1592.   MESSAGGIO$=MESSAGGIO$+"[>"+GIOCATORE$+"<]"+ACAPO$
  1593.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[MESSAGGIO$,22,20,1,9000]
  1594.   If TASTO=0 and TASTOSCANSITO=0
  1595.    GIOCATORE$="Anonymous" : TASTO=13
  1596.   End If 
  1597.   If TASTO>255
  1598.    TASTO=TASTO mod 256
  1599.   End If 
  1600.   If TASTO=8
  1601.    GIOCATORE$=Left$(GIOCATORE$,Len(GIOCATORE$)-1)
  1602.   Else If TASTO=27
  1603.    TASTO=13 : TASTOESCAPEPREMUTO=VERO
  1604.   Else If TASTO>31
  1605.    GIOCATORE$=GIOCATORE$+Chr$(TASTO)
  1606.   End If 
  1607.  Until TASTO=13
  1608.  If TASTOESCAPEPREMUTO=FALSO
  1609.   For POSIZIONI=98 To 0 Step -1
  1610.    If Val(PUNTEGGIODELGIOCATORE$(POSIZIONI))<PUNTEGGIO
  1611.     NOMEDELGIOCATORE$(POSIZIONI+1)=NOMEDELGIOCATORE$(POSIZIONI)
  1612.     PUNTEGGIODELGIOCATORE$(POSIZIONI+1)=PUNTEGGIODELGIOCATORE$(POSIZIONI)
  1613.     LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONI+1)=LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONI)
  1614.    End If 
  1615.   Next POSIZIONI
  1616.   NOMEDELGIOCATORE$(POSIZIONE-1)=GIOCATORE$
  1617.   PUNTEGGIODELGIOCATORE$(POSIZIONE-1)=Str$(PUNTEGGIO)-" "
  1618.   If LIVELLO<0
  1619.    LIVELLO= Not LIVELLO
  1620.   End If 
  1621.   LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONE-1)=Str$(LIVELLO)-" "
  1622.  End If 
  1623. End Proc
  1624. Procedure FERMAILMODULOMED
  1625.  'stop the med module 
  1626.  Med Stop 
  1627. End Proc
  1628. Procedure HAISPARATOILRAGGIOLASER
  1629.  'fire the laser ray  
  1630.  If LASER>0 and RAGGIOLASERSPARATO=FALSO
  1631.   XLASER=XBARRA : YLASER=YBARRA-5 : IMMAGINERAGGIOLASER=9+LASER
  1632.   RAGGIOLASERSPARATO=VERO
  1633.   If EFFETTISONORICARICATI=2
  1634.    Sam Play VOCE,4,8363/SEMITONO#^LASER : Proc VOCESEGUENTE
  1635.   Else If EFFETTISONORICARICATI=1
  1636.    Shoot 
  1637.   End If 
  1638.  End If 
  1639. End Proc
  1640. Procedure ILBOINGESTATOCOLPITO[BOING]
  1641.  'check if the specified boing has been hitted  
  1642.  If Bob Col(OGGETTOBOING+BOING,OGGETTOPALLINA To OGGETTOPALLINA+MASSIMOPALLINEINCAMPO-1)=VERO
  1643.   PALLINA=Col(-1)-OGGETTOPALLINA
  1644.   XDISTANZADELLAPALLINADALBOINGCOLPITO=Abs(XBOING(BOING)-Int(XPALLINA#(PALLINA)))
  1645.   If XDISTANZADELLAPALLINADALBOINGCOLPITO>9
  1646.    DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
  1647.   End If 
  1648.   YDISTANZADELLAPALLINADALBOINGCOLPITO=Abs(YBOING(BOING)-Int(YPALLINA#(PALLINA)))
  1649.   If YDISTANZADELLAPALLINADALBOINGCOLPITO>9
  1650.    DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  1651.   End If 
  1652.   Add PUNTEGGIO,3 : Proc MOSTRAILPUNTEGGIO[VERO]
  1653.   BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING
  1654.   If EFFETTISONORICARICATI=2
  1655.    Sam Play VOCE,9 : Proc VOCESEGUENTE
  1656.   Else If EFFETTISONORICARICATI=1
  1657.    Bell 3
  1658.   End If 
  1659.  Else If Bob Col(OGGETTOBOING+BOING,OGGETTORAGGIOLASER To OGGETTORAGGIOLASER)=VERO
  1660.   Proc CANCELLAILRAGGIOLASER
  1661.   Add PUNTEGGIO,2 : Proc MOSTRAILPUNTEGGIO[VERO]
  1662.   BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING
  1663.   If EFFETTISONORICARICATI=2
  1664.    Sam Play VOCE,9 : Proc VOCESEGUENTE
  1665.   Else If EFFETTISONORICARICATI=1
  1666.    Bell 2
  1667.   End If 
  1668.  Else If Bob Col(OGGETTOBOING+BOING,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
  1669.   If BOINGMORTALE(BOING)=VERO
  1670.    EFFETTODELBOINGMORTALE=Rnd(3)
  1671.    If EFFETTODELBOINGMORTALE=3
  1672.     Proc CANCELLALEPALLINE
  1673.     PALLINEINCAMPO=0
  1674.    Else If EFFETTODELBOINGMORTALE=2
  1675.     If LASER>0
  1676.      Dec LASER
  1677.     End If 
  1678.    Else If EFFETTODELBOINGMORTALE=1
  1679.     _BARRABLOCCATA=50+LIVELLO
  1680.    End If 
  1681.   End If 
  1682.   Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
  1683.   BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING
  1684.   If EFFETTISONORICARICATI=2
  1685.    Sam Play VOCE,9 : Proc VOCESEGUENTE
  1686.   Else If EFFETTISONORICARICATI=1
  1687.    Bell 1
  1688.   End If 
  1689.  End If 
  1690. End Proc
  1691. Procedure ILBOINGEUSCITODALCAMPODIGIOCO[BOING]
  1692.  'check if the specified boing has gone out of the game field 
  1693.  If YBOING(BOING)>255+9 Then BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING
  1694. End Proc
  1695. Procedure ILGUANOEUSCITODALCAMPODIGIOCO
  1696.  'check if the guano has gone out of the game field 
  1697.  If YGUANO>255 Then Proc CANCELLAILGUANO
  1698. End Proc
  1699. Procedure ILNEMICOUNOESTATOCOLPITO[NEMICOUNO]
  1700.  'check if the specified enemy one has been hitted  
  1701.  If Bob Col(OGGETTONEMICOUNO+NEMICOUNO,OGGETTOPALLINA To OGGETTOPALLINA+MASSIMOPALLINEINCAMPO-1)=VERO
  1702.   PALLINA=Col(-1)-OGGETTOPALLINA
  1703.   XDISTANZADELLAPALLINADALBOINGCOLPITO=Abs(XNEMICOUNO(NEMICOUNO)-Int(XPALLINA#(PALLINA)))
  1704.   If XDISTANZADELLAPALLINADALBOINGCOLPITO>11
  1705.    DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
  1706.   End If 
  1707.   YDISTANZADELLAPALLINADALBOINGCOLPITO=Abs(YNEMICOUNO(NEMICOUNO)-Int(YPALLINA#(PALLINA)))
  1708.   If YDISTANZADELLAPALLINADALBOINGCOLPITO>11
  1709.    DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  1710.   End If 
  1711.   Add PUNTEGGIO,6 : Proc MOSTRAILPUNTEGGIO[VERO]
  1712.   If EFFETTISONORICARICATI=2
  1713.    Sam Play VOCE,9 : Proc VOCESEGUENTE
  1714.   Else If EFFETTISONORICARICATI=1
  1715.    Bell 3
  1716.   End If 
  1717.   NEMICOUNOCOLPITO=VERO
  1718.  Else If Bob Col(OGGETTONEMICOUNO+NEMICOUNO,OGGETTORAGGIOLASER To OGGETTORAGGIOLASER)=VERO
  1719.   Proc CANCELLAILRAGGIOLASER
  1720.   Add PUNTEGGIO,4 : Proc MOSTRAILPUNTEGGIO[VERO]
  1721.   If EFFETTISONORICARICATI=2
  1722.    Sam Play VOCE,9 : Proc VOCESEGUENTE
  1723.   Else If EFFETTISONORICARICATI=1
  1724.    Bell 2
  1725.   End If 
  1726.   NEMICOUNOCOLPITO=VERO
  1727.  Else If Bob Col(OGGETTONEMICOUNO+NEMICOUNO,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
  1728.   Add PUNTEGGIO,2 : Proc MOSTRAILPUNTEGGIO[FALSO]
  1729.   If EFFETTISONORICARICATI=2
  1730.    Sam Play VOCE,9 : Proc VOCESEGUENTE
  1731.   Else If EFFETTISONORICARICATI=1
  1732.    Bell 1
  1733.   End If 
  1734.   NEMICOUNOCOLPITO=VERO
  1735.  End If 
  1736.  If NEMICOUNOCOLPITO=VERO
  1737.   Proc CANCELLAILNEMICOUNO[NEMICOUNO] : NEMICOUNO(NEMICOUNO)=0
  1738.   RITARDODELLENTRATAINCAMPODEINEMICI=-3000
  1739.  End If 
  1740. End Proc
  1741. Procedure ILNEMICOUNOEUSCITODALCAMPODIGIOCO[NEMICOUNO]
  1742.  'check if the specified enemy one has gone out of the game field 
  1743.  If COMPORTAMENTODEINEMICI=0
  1744.   If XDIPARTENZANEMICOUNO(NEMICOUNO)=0
  1745.    If XNEMICOUNO(NEMICOUNO)=Screen Width-LARGHEZZAPANNELLO+11
  1746.     Proc CANCELLAILNEMICOUNO[NEMICOUNO]
  1747.     If COMPORTAMENTODEINEMICI<MASSIMOCOMPORTAMENTIDEINEMICI-1
  1748.      Inc COMPORTAMENTODEINEMICI
  1749.     End If 
  1750.     NEMICOUNOUSCITODALCAMPODIGIOCO=VERO
  1751.    End If 
  1752.   Else If XDIPARTENZANEMICOUNO(NEMICOUNO)=1
  1753.    If XNEMICOUNO(NEMICOUNO)=-11
  1754.     Proc CANCELLAILNEMICOUNO[NEMICOUNO]
  1755.     If COMPORTAMENTODEINEMICI<MASSIMOCOMPORTAMENTIDEINEMICI-1
  1756.      Inc COMPORTAMENTODEINEMICI
  1757.     End If 
  1758.     NEMICOUNOUSCITODALCAMPODIGIOCO=VERO
  1759.    End If 
  1760.   End If 
  1761.   If NEMICOUNOUSCITODALCAMPODIGIOCO=VERO
  1762.    Proc CANCELLAILNEMICOUNO[NEMICOUNO] : NEMICOUNO(NEMICOUNO)=0
  1763.    RITARDODELLENTRATAINCAMPODEINEMICI=-3000
  1764.   End If 
  1765.  End If 
  1766. End Proc
  1767. Procedure ILNEMICOUNOHASPARATO[NEMICOUNO]
  1768.  'manage the enemy one bullet 
  1769.  If NEMICOUNO(NEMICOUNO)=1 or NEMICOUNO(NEMICOUNO)=2 or NEMICOUNO(NEMICOUNO)=36
  1770.   If PROIETTILENEMICOUNO(NEMICOUNO)=0
  1771.    PROIETTILENEMICOUNO(NEMICOUNO)=1
  1772.   End If 
  1773.  End If 
  1774.  If PROIETTILENEMICOUNO(NEMICOUNO)>0
  1775.   Bob OGGETTOPROIETTILENEMICOUNO+NEMICOUNO,XPROIETTILENEMICOUNO(NEMICOUNO),YPROIETTILENEMICOUNO(NEMICOUNO),IMMAGINEPROIETTILENEMICIUNO
  1776.  End If 
  1777.  If PROIETTILENEMICOUNO(NEMICOUNO)=1
  1778.   XPROIETTILENEMICOUNO(NEMICOUNO)=XNEMICOUNO(NEMICOUNO)
  1779.   YPROIETTILENEMICOUNO(NEMICOUNO)=YNEMICOUNO(NEMICOUNO)+11
  1780.   DIVISOREMOVIMENTOPROIETTILENEMICOUNO=Min(Abs(XBARRA-XNEMICOUNO(NEMICOUNO)),Abs(YBARRA-YNEMICOUNO(NEMICOUNO)))
  1781.   DELTAXPROIETTILENEMICOUNO#(NEMICOUNO)=((XBARRA-XNEMICOUNO(NEMICOUNO))/DIVISOREMOVIMENTOPROIETTILENEMICOUNO)
  1782.   DELTAYPROIETTILENEMICOUNO#(NEMICOUNO)=((YBARRA-YNEMICOUNO(NEMICOUNO))/DIVISOREMOVIMENTOPROIETTILENEMICOUNO)
  1783.   PROIETTILENEMICOUNO(NEMICOUNO)=2
  1784.  Else If PROIETTILENEMICOUNO(NEMICOUNO)=2
  1785.   Add XPROIETTILENEMICOUNO(NEMICOUNO),Int(DELTAXPROIETTILENEMICOUNO#(NEMICOUNO))
  1786.   Add YPROIETTILENEMICOUNO(NEMICOUNO),Int(DELTAYPROIETTILENEMICOUNO#(NEMICOUNO))
  1787.   Proc ILPROIETTILEDELNEMICOUNOHACOLPITOLABARRA[NEMICOUNO]
  1788.   Proc ILPROIETTILEDELNEMICOUNOEUSCITODALCAMPODIGIOCO[NEMICOUNO]
  1789.  Else If PROIETTILENEMICOUNO(NEMICOUNO)=3
  1790.   Proc CANCELLAILPROIETTILEDELNEMICOUNO[NEMICOUNO]
  1791.   PROIETTILENEMICOUNO(NEMICOUNO)=0
  1792.  End If 
  1793. End Proc
  1794. Procedure ILPAPEROALIENOESTATOCOLPITO
  1795.  'check if the alien duck has been hitted 
  1796.  If Bob Col(OGGETTOPAPEROALIENO,OGGETTOPALLINA To OGGETTOPALLINA+MASSIMOPALLINEINCAMPO-1)=VERO
  1797.   PALLINA=Col(-1)-OGGETTOPALLINA
  1798.   XPALLINA=Int(XPALLINA#(PALLINA))
  1799.   XDISTANZADELLAPALLINADALPAPEROALIENO=Abs(XPAPEROALIENO-XPALLINA)
  1800.   If XDISTANZADELLAPALLINADALPAPEROALIENO>12
  1801.    DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
  1802.   End If 
  1803.   YPALLINA=Int(YPALLINA#(PALLINA))
  1804.   YDISTANZADELLAPALLINADALPAPEROALIENO=YPAPEROALIENO-YPALLINA
  1805.   If YDISTANZADELLAPALLINADALPAPEROALIENO>-21 and YDISTANZADELLAPALLINADALPAPEROALIENO<10
  1806.    DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  1807.   End If 
  1808.   Add PUNTEGGIO,24 : Proc MOSTRAILPUNTEGGIO[VERO]
  1809.   If EFFETTISONORICARICATI=2
  1810.    Sam Play VOCE,9 : Proc VOCESEGUENTE
  1811.   Else If EFFETTISONORICARICATI=1
  1812.    Boom 
  1813.   End If 
  1814.   _PAPEROALIENOCOLPITO=VERO
  1815.  Else If Bob Col(OGGETTOPAPEROALIENO,OGGETTORAGGIOLASER To OGGETTORAGGIOLASER)=VERO
  1816.   Proc CANCELLAILRAGGIOLASER
  1817.   Add PUNTEGGIO,12 : Proc MOSTRAILPUNTEGGIO[VERO]
  1818.   If EFFETTISONORICARICATI=2
  1819.    Sam Play VOCE,9 : Proc VOCESEGUENTE
  1820.   Else If EFFETTISONORICARICATI=1
  1821.    Boom 
  1822.   End If 
  1823.   _PAPEROALIENOCOLPITO=VERO
  1824.  Else If Bob Col(OGGETTOPAPEROALIENO,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
  1825.   Add PUNTEGGIO,6 : Proc MOSTRAILPUNTEGGIO[VERO]
  1826.   If EFFETTISONORICARICATI=2
  1827.    Sam Play VOCE,9 : Proc VOCESEGUENTE
  1828.   Else If EFFETTISONORICARICATI=1
  1829.    Boom 
  1830.   End If 
  1831.   _PAPEROALIENOCOLPITO=VERO
  1832.  End If 
  1833.  If _PAPEROALIENOCOLPITO=VERO
  1834.   Proc CANCELLAILPAPEROALIENO
  1835.   Proc IMPOSTAILRITARDODELLENTRATAINCAMPODELPAPEROALIENO
  1836.   Proc CANCELLAILGUANO
  1837.  End If 
  1838. End Proc
  1839. Procedure ILPAPEROALIENOEUSCITODALCAMPODIGIOCO
  1840.  'check if the alien duck has gone out of the game field  
  1841.  If YPAPEROALIENO>255+9 Then Proc CANCELLAILPAPEROALIENO
  1842. End Proc
  1843. Procedure ILPROIETTILEDELNEMICOUNOEUSCITODALCAMPODIGIOCO[NEMICOUNO]
  1844.  'check if the ballthief has gone out of the game field 
  1845.  If XPROIETTILENEMICOUNO(NEMICOUNO)<-4 or XPROIETTILENEMICOUNO(NEMICOUNO)>XPANNELLO-4
  1846.   PROIETTILENEMICOUNO(NEMICOUNO)=3
  1847.  End If 
  1848.  If YPROIETTILENEMICOUNO(NEMICOUNO)>255+4
  1849.   PROIETTILENEMICOUNO(NEMICOUNO)=3
  1850.  End If 
  1851. End Proc
  1852. Procedure ILPROIETTILEDELNEMICOUNOHACOLPITOLABARRA[NEMICOUNO]
  1853.  'check if the enemy one bullet has been hitted the bar 
  1854.  If Bob Col(OGGETTOPROIETTILENEMICOUNO+NEMICOUNO,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
  1855.   If _BARRE>0
  1856.    Dec _BARRE
  1857.   End If 
  1858.   PALLINEINCAMPO=0
  1859.   PROIETTILENEMICOUNO(NEMICOUNO)=3
  1860.  End If 
  1861. End Proc
  1862. Procedure ILRUBAPALLINAESTATOCOLPITO
  1863.  'check if the ballthief has been hitted  
  1864.  If RUBAPALLINACOLPITO=FALSO
  1865.   For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  1866.    If PALLINAPRESADALRUBAPALLINA<MASSIMOPALLINEINCAMPO
  1867.     If PALLINA<>PALLINAPRESADALRUBAPALLINA
  1868.      If Bob Col(OGGETTORUBAPALLINA,OGGETTOPALLINA+PALLINA To OGGETTOPALLINA+PALLINA)=VERO
  1869.       XPALLINA=Int(XPALLINA#(PALLINA))
  1870.       XDISTANZADELLAPALLINADALRUBAPALLINA=Abs(XRUBAPALLINA-XPALLINA)
  1871.       If XDISTANZADELLAPALLINADALRUBAPALLINA>12
  1872.        DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
  1873.       End If 
  1874.       YPALLINA=Int(YPALLINA#(PALLINA))
  1875.       YDISTANZADELLAPALLINADALRUBAPALLINA=YRUBAPALLINA-YPALLINA
  1876.       If YDISTANZADELLAPALLINADALRUBAPALLINA>0 and YDISTANZADELLAPALLINADALRUBAPALLINA<11
  1877.        DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  1878.       End If 
  1879.       Add PUNTEGGIO,50 : Proc MOSTRAILPUNTEGGIO[VERO]
  1880.       If EFFETTISONORICARICATI=2
  1881.        Sam Play VOCE,9 : Proc VOCESEGUENTE
  1882.       Else If EFFETTISONORICARICATI=1
  1883.        Boom 
  1884.       End If 
  1885.       RUBAPALLINACOLPITO=VERO
  1886.      End If 
  1887.     End If 
  1888.    End If 
  1889.   Next PALLINA
  1890.   If Bob Col(OGGETTORUBAPALLINA,OGGETTORAGGIOLASER To OGGETTORAGGIOLASER)=VERO
  1891.    Proc CANCELLAILRAGGIOLASER
  1892.    Add PUNTEGGIO,100 : Proc MOSTRAILPUNTEGGIO[VERO]
  1893.    If EFFETTISONORICARICATI=2
  1894.     Sam Play VOCE,9 : Proc VOCESEGUENTE
  1895.    Else If EFFETTISONORICARICATI=1
  1896.     Boom 
  1897.    End If 
  1898.    RUBAPALLINACOLPITO=VERO
  1899.   Else If Bob Col(OGGETTORUBAPALLINA,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
  1900.    Add PUNTEGGIO,200 : Proc MOSTRAILPUNTEGGIO[VERO]
  1901.    If EFFETTISONORICARICATI=2
  1902.     Sam Play VOCE,9 : Proc VOCESEGUENTE
  1903.    Else If EFFETTISONORICARICATI=1
  1904.     Boom 
  1905.    End If 
  1906.    RUBAPALLINACOLPITO=VERO
  1907.   End If 
  1908.  Else 
  1909.   Inc IMMAGINERUBAPALLINA
  1910.   If IMMAGINERUBAPALLINA=10
  1911.    Proc CANCELLAILRUBAPALLINA
  1912.    Proc IMPOSTAILRITARDODELLENTRATAINCAMPODELRUBAPALLINA
  1913.    If PALLINAPRESADALRUBAPALLINA<MASSIMOPALLINEINCAMPO
  1914.     PALLINA(PALLINAPRESADALRUBAPALLINA)=VERO
  1915.    End If 
  1916.    PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
  1917.    IMMAGINERUBAPALLINA=0
  1918.    RUBAPALLINACOLPITO=FALSO
  1919.   End If 
  1920.  End If 
  1921. End Proc
  1922. Procedure ILRUBAPALLINAEUSCITODALCAMPODIGIOCO
  1923.  'check if the ballthief has gone out of the game field 
  1924.  If YRUBAPALLINA<-4
  1925.   Dec PALLINEINCAMPO
  1926.   Proc CANCELLAILRUBAPALLINA
  1927.   PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
  1928.  End If 
  1929. End Proc
  1930. Procedure IMPOSTAGLIOGGETTI
  1931.  'set the object images 
  1932.  IMMAGINEPALLINA=Length(1)
  1933.  IMMAGINEPROIETTILENEMICIUNO=IMMAGINEPALLINA-1
  1934.  IMMAGINELASER=6
  1935.  MATTONCINIDIPOTENZIAMENTO=Length(1)-IMMAGINIPROIETTILENEMICIUNO-IMMAGININEMICOUNO-IMMAGINIBOINGMORTALE-IMMAGINIBOING-IMMAGINIRUBAPALLINA-IMMAGINIGUANO-IMMAGINIPAPERO*2-IMMAGINIESPLOSIONEMATTONCINO-116
  1936.  For IMMAGINE=0 To IMMAGININEMICOUNO-1
  1937.   IMMAGINENEMICOUNO(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIPROIETTILENEMICIUNO-IMMAGININEMICOUNO+IMMAGINE
  1938.  Next IMMAGINE
  1939.  For IMMAGINE=0 To IMMAGINIBOINGMORTALE-1
  1940.   IMMAGINEBOINGMORTALE(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIPROIETTILENEMICIUNO-IMMAGININEMICOUNO-IMMAGINIBOINGMORTALE+IMMAGINE
  1941.  Next IMMAGINE
  1942.  For IMMAGINE=0 To IMMAGINIBOING-1
  1943.   IMMAGINEBOING(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIPROIETTILENEMICIUNO-IMMAGININEMICOUNO-IMMAGINIBOINGMORTALE-IMMAGINIBOING+IMMAGINE
  1944.  Next IMMAGINE
  1945.  For IMMAGINE=0 To IMMAGINIRUBAPALLINA-1
  1946.   IMMAGINERUBAPALLINA(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIPROIETTILENEMICIUNO-IMMAGININEMICOUNO-IMMAGINIBOINGMORTALE-IMMAGINIBOING-IMMAGINIRUBAPALLINA+IMMAGINE
  1947.  Next IMMAGINE
  1948.  IMMAGINEGUANO=IMMAGINEPALLINA-IMMAGINIPROIETTILENEMICIUNO-IMMAGININEMICOUNO-IMMAGINIBOINGMORTALE-IMMAGINIBOING-IMMAGINIRUBAPALLINA-IMMAGINIGUANO
  1949.  For IMMAGINE=0 To IMMAGINIPAPERO-1
  1950.   IMMAGINEPAPEROALIENO(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIPROIETTILENEMICIUNO-IMMAGININEMICOUNO-IMMAGINIBOINGMORTALE-IMMAGINIBOING-IMMAGINIRUBAPALLINA-IMMAGINIGUANO-IMMAGINIPAPERO+IMMAGINE
  1951.  Next IMMAGINE
  1952.  For IMMAGINE=0 To IMMAGINIPAPERO-1
  1953.   IMMAGINEPAPERO(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIPROIETTILENEMICIUNO-IMMAGININEMICOUNO-IMMAGINIBOINGMORTALE-IMMAGINIBOING-IMMAGINIRUBAPALLINA-IMMAGINIGUANO-IMMAGINIPAPERO*2+IMMAGINE
  1954.  Next IMMAGINE
  1955.  For IMMAGINE=0 To 12
  1956.   IMMAGINEESPLOSIONEMATTONCINO(IMMAGINE)=IMMAGINE+116
  1957.  Next IMMAGINE
  1958. End Proc
  1959. Procedure IMPOSTAIBOING
  1960.  'set the boings to their initial status    
  1961.  For BOING=0 To MASSIMOBOINGINCAMPO-1
  1962.   BOING(BOING)=0
  1963.  Next BOING
  1964. End Proc
  1965. Procedure IMPOSTAICOLORI
  1966.  'remember the screen palette 
  1967.  Get Bob Palette 
  1968.  C0LORIDELLOSCHERMOMENOUNO=Screen Colour-1
  1969.  If C0LORIDELLOSCHERMOMENOUNO=63 Then C0LORIDELLOSCHERMOMENOUNO=31
  1970.  For C=0 To C0LORIDELLOSCHERMOMENOUNO
  1971.   C0LORE(C)=Colour(C)
  1972.  Next C
  1973. End Proc
  1974. Procedure IMPOSTAILAMPEGGI
  1975.  'set the colour flashes  
  1976.  Flash 20,"(0FF,2)(FFF,1)(0FF,2)(000,1)"
  1977.  Flash 21,"(F70,2)(FFF,1)(F70,2)(000,1)"
  1978.  Flash 22,"(F77,9)(FF7,9)(7F7,9)(7FF,9)(77F,9)(F7F,9)"
  1979. End Proc
  1980. Procedure IMPOSTAILRITARDODELLENTRATAINCAMPODELPAPEROALIENO
  1981.  'time waiting for the alien duck 
  1982.  RITARDODELLENTRATAINCAMPODELPAPEROALIENO=29475-LIVELLO*25
  1983. End Proc
  1984. Procedure IMPOSTAILRITARDODELLENTRATAINCAMPODELRUBAPALLINA
  1985.  'time waiting for the ballthief
  1986.  RITARDODELLENTRATAINCAMPODELRUBAPALLINA=55950-LIVELLO*50
  1987. End Proc
  1988. Procedure IMPOSTAINEMICIUNO
  1989.  For NEMICOUNO=0 To MASSIMONEMICIUNOINCAMPO-1
  1990.   NEMICOUNO(NEMICOUNO)=0
  1991.  Next NEMICOUNO
  1992. End Proc
  1993. Procedure IMPOSTAIPERCORSIDEIFILE
  1994.  'look for the file paths 
  1995.  PERCORSODELLAGRAFICA$=PERCORSO$+"Grafica/"
  1996.  PERCORSODEILIVELLI$=PERCORSO$+"Livelli/"
  1997.  PERCORSODELLAMUSICA$=PERCORSO$+"Musica/"
  1998. End Proc
  1999. Procedure IMPOSTALADURATADELLERIGHE
  2000.  'set the time duration of the rows in 50th of a second   
  2001.  DURATADELLARIGA(0)=3000
  2002.  DURATADELLARIGA(1)=9000
  2003.  DURATADELLARIGA(2)=27000
  2004. End Proc
  2005. Procedure IMPOSTALARCOBALENO
  2006.  'set the rainbow 
  2007.  Set Rainbow 0,0,271,"","",""
  2008.  For LINEADELLARCOBALENO=0 To 255
  2009.   Rain(0,LINEADELLARCOBALENO)=$FFF
  2010.  Next LINEADELLARCOBALENO
  2011.  Rainbow 0,257,0,271
  2012. End Proc
  2013. Procedure IMPOSTALEPALLINE
  2014.  'set the bouncign of the balls to their initial state  
  2015.  For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  2016.   If PALLINA<PALLINEINCAMPO
  2017.    PALLINA(PALLINA)=VERO
  2018.    VELOCITADELLAPALLINA#(PALLINA)=1
  2019.    D1REZIONEXPALLINA=Rnd(1)
  2020.    LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=FALSO
  2021.    If D1REZIONEXPALLINA=1
  2022.     DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)
  2023.    Else 
  2024.     DELTAXPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
  2025.    End If 
  2026.    DELTAYPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
  2027.   Else 
  2028.    PALLINA(PALLINA)=FALSO
  2029.    Proc CANCELLALAPALLINA[PALLINA]
  2030.   End If 
  2031.   LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=FALSO
  2032.  Next PALLINA
  2033. End Proc
  2034. Procedure IMPOSTALEZONEDEIMATTONCINI
  2035.  'set the brick detection zones 
  2036.  Reserve Zone 264
  2037.  For MATTONCINO=0 To 246
  2038.   LINEADELMATTONCINO=MATTONCINO/13 : RIGADELMATTONCINO=MATTONCINO mod 13
  2039.   X0ZONA(MATTONCINO)=RIGADELMATTONCINO*21
  2040.   Y0ZONA(MATTONCINO)=LINEADELMATTONCINO*11
  2041.   X0MATTONCINO=X0ZONA(MATTONCINO)
  2042.   Y0MATTONCINO=Y0ZONA(MATTONCINO)
  2043.   If RIGADELMATTONCINO=12
  2044.    X1MATTONCINO=X0MATTONCINO+19
  2045.    Y1MATTONCINO=Y0MATTONCINO+9
  2046.   Else 
  2047.    X1MATTONCINO=X0MATTONCINO+20
  2048.    Y1MATTONCINO=Y0MATTONCINO+10
  2049.   End If 
  2050.   Set Zone MATTONCINO+1,X0MATTONCINO,Y0MATTONCINO To X1MATTONCINO,Y1MATTONCINO
  2051.  Next MATTONCINO
  2052. End Proc
  2053. Procedure IMPOSTALINGOMBRODELLABARRA
  2054.  'set the length of the bars from the center to an edge 
  2055.  INGOMBRODELLABARRA(0)=10
  2056.  INGOMBRODELLABARRA(1)=16
  2057.  INGOMBRODELLABARRA(2)=31
  2058. End Proc
  2059. Procedure IMPOSTALOSCHERMO
  2060.  'set the screen  
  2061.  Screen Open 0,320,256,64,Lowres : Curs Off : Flash Off : Pen 1 : Paper 0
  2062.  Cls : Bob Update Off : Gr Writing 0 : Wait Vbl : Double Buffer : Update Off 
  2063.  Autoback 0 : Limit Mouse 
  2064. End Proc
  2065. Procedure INDIVIDUALAPOSIZIONEDELPROGRAMMA
  2066.  ' Look for the position of the program 
  2067.  PERCORSO$=Dir$
  2068. End Proc
  2069. Procedure LABARRAESTATACOLPITADALGUANO
  2070.  'check if the bar has been hitted by the guano 
  2071.  If GUANOINCAMPO=VERO and GUANOMOLLATO=VERO
  2072.   If Bob Col(OGGETTOGUANO,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
  2073.    EFFETTODELGUANO=Rnd(2)
  2074.    If EFFETTODELGUANO=2
  2075.     If LASER>0
  2076.      Dec LASER
  2077.     End If 
  2078.    Else If EFFETTODELGUANO=1
  2079.     _BARRABLOCCATA=50+LIVELLO
  2080.    End If 
  2081.    Proc CANCELLAILGUANO
  2082.   End If 
  2083.  End If 
  2084. End Proc
  2085. Procedure LABARRAESTATACOLPITADALRAGGIOLASERRIFLESSO
  2086.  'check if the bar  has been hitted by the reflected laser ray  
  2087.  If RAGGIOLASERSPARATO=VERO and RAGGIOLASERRIFLESSO=VERO
  2088.   If Bob Col(OGGETTORAGGIOLASER,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
  2089.    EFFETTODELRAGGIOLASERRIFLESSO=Rnd(2)
  2090.    If EFFETTODELRAGGIOLASERRIFLESSO=2
  2091.     If LASER>0
  2092.      Dec LASER
  2093.     End If 
  2094.    Else If EFFETTODELRAGGIOLASERRIFLESSO=1
  2095.     _BARRABLOCCATA=50+LIVELLO
  2096.    End If 
  2097.    Proc CANCELLAILRAGGIOLASER
  2098.    RAGGIOLASERRIFLESSO=FALSO
  2099.   End If 
  2100.  End If 
  2101. End Proc
  2102. Procedure LAPALLINAEUSCITADALCAMPODIGIOCO[PALLINA]
  2103.  'check if the specified ball has gone out of the game field  
  2104.  If YPALLINA#(PALLINA)>255+4
  2105.   Proc CANCELLALAPALLINA[PALLINA]
  2106.   PALLINA(PALLINA)=FALSO
  2107.   Dec PALLINEINCAMPO
  2108.  End If 
  2109. End Proc
  2110. Procedure LAPALLINAHACOLPITOLABARRA[PALLINA]
  2111.  'check if the specified ball has hitted the bar  
  2112.  If Bob Col(OGGETTOPALLINA+PALLINA,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
  2113.   If LAPALLINAHACOLPITOLABARRA(PALLINA)=FALSO
  2114.    If C0LLA=VERO
  2115.     XCOLLA(PALLINA)=Int(XBARRA-XPALLINA#(PALLINA))
  2116.     YCOLLA(PALLINA)=YBARRA-Int(YPALLINA#(PALLINA))
  2117.     LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=VERO
  2118.    End If 
  2119.    If Col(OGGETTOCENTRODELLABARRA)=VERO
  2120.     If LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=VERO
  2121.      DELTAXPALLINA#(PALLINA)=DELTAXPALLINA#(PALLINA)/2.0
  2122.      DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)*2
  2123.      LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=FALSO
  2124.     Else 
  2125.      DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  2126.     End If 
  2127.     If EFFETTISONORICARICATI=2
  2128.      Sam Play VOCE,2 : Proc VOCESEGUENTE
  2129.     Else If EFFETTISONORICARICATI=1
  2130.      Boom 
  2131.     End If 
  2132.    Else If Col(OGGETTOLATIDELLABARRA)=VERO
  2133.     If LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=VERO
  2134.      DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  2135.     Else 
  2136.      DELTAXPALLINA#(PALLINA)=DELTAXPALLINA#(PALLINA)*2
  2137.      DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)/2.0
  2138.      LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=VERO
  2139.     End If 
  2140.     If EFFETTISONORICARICATI=2
  2141.      Sam Play VOCE,2,8363/2 : Proc VOCESEGUENTE
  2142.     Else If EFFETTISONORICARICATI=1
  2143.      Boom 
  2144.     End If 
  2145.    End If 
  2146.    LAPALLINAHACOLPITOLABARRA(PALLINA)=VERO
  2147.   End If 
  2148.  Else 
  2149.   LAPALLINAHACOLPITOLABARRA(PALLINA)=FALSO
  2150.  End If 
  2151. End Proc
  2152. Procedure LAPALLINAHACOLPITOLARIGA[PALLINA]
  2153.  'check if the specified ball has hitted the row  
  2154.  If Bob Col(OGGETTOPALLINA+PALLINA,OGGETTORIGA To OGGETTORIGA)=VERO
  2155.   If DELTAYPALLINA#(PALLINA)>0
  2156.    DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  2157.    If EFFETTISONORICARICATI=2
  2158.     Sam Play VOCE,7 : Proc VOCESEGUENTE
  2159.    Else If EFFETTISONORICARICATI=1
  2160.     Bell 96
  2161.    End If 
  2162.   End If 
  2163.  End If 
  2164. End Proc
  2165. Procedure LIMITAIMOVIMENTIDELLABARRA
  2166.  'lock bar movements  
  2167.  X0LIMITETOPO=X Hard(INGOMBRODELLABARRA(LUNGHEZZADELLABARRA))
  2168.  Y0LIMITETOPO=Y Hard(0)
  2169.  X1LIMITETOPO=X Hard(XPANNELLO-1-INGOMBRODELLABARRA(LUNGHEZZADELLABARRA))
  2170.  Y1LIMITETOPO=Y Hard(Screen Height-1)
  2171.  Limit Mouse X0LIMITETOPO,Y0LIMITETOPO To X1LIMITETOPO,Y1LIMITETOPO
  2172. End Proc
  2173. Procedure LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
  2174.  ' Lock bar movements while it is changing
  2175.  If OGGETTO>39 and OGGETTO<46
  2176.   INGOMBRODELLABARRA=46-OGGETTO+10
  2177.  Else If OGGETTO>12 and OGGETTO<27
  2178.   INGOMBRODELLABARRA=OGGETTO+4
  2179.  End If 
  2180.  X0LIMITETOPO=X Hard(INGOMBRODELLABARRA)
  2181.  Y0LIMITETOPO=Y Hard(0)
  2182.  X1LIMITETOPO=X Hard(XPANNELLO-1-INGOMBRODELLABARRA)
  2183.  Y1LIMITETOPO=Y Hard(Screen Height-1)
  2184.  Wait Vbl 
  2185.  Limit Mouse X0LIMITETOPO,Y0LIMITETOPO To X1LIMITETOPO,Y1LIMITETOPO
  2186. End Proc
  2187. Procedure LIMITI[NUMERO,LIMITEMINIMO,LIMITEMASSIMO]
  2188.  '-> Limiti by Stefano Regattin 
  2189.  'i> 19 maggio 1996 
  2190.  'm> 12 giugno 1996 
  2191.  '--------------------------------------------------------
  2192.  'La procedura equivale alle seguenti linee di programma: 
  2193.  ' If NUMERO<LIMITEMINIMO Then NUMERO=LIMITEMINIMO
  2194.  ' If NUMERO>LIMITEMASSIMO Then NUMERO=LIMITEMASSIMO
  2195.  'Se LIMITEMINIMO ï¿½ maggiore di LIMITEMASSIMO ne scambia i valori 
  2196.  '----------------------------------------------------------------  
  2197.  If LIMITEMINIMO>LIMITEMASSIMO Then Swap LIMITEMINIMO,LIMITEMASSIMO
  2198.  NUMERO=Max(Min(NUMERO,LIMITEMASSIMO),LIMITEMINIMO)
  2199. End Proc[NUMERO]
  2200. Procedure MATTONCINIDIPOTENZIAMENTO[MATTONCINO,ESCESEUGUALEAZERO]
  2201.  'manage the bonus bricks 
  2202.  If ESCESEUGUALEAZERO>0 Then Pop Proc
  2203.  If MATTONCINO=0
  2204.   For MATTONCINODIPOTENZIAMENTO=0 To MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1
  2205.    TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)
  2206.    If TIPODIMATTONCINODIPOTENZIAMENTO>0
  2207.     IMMAGINE=115+IMMAGINIESPLOSIONEMATTONCINO+TIPODIMATTONCINODIPOTENZIAMENTO
  2208.     Bob OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO,XMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO),YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO),IMMAGINE
  2209.     Proc MATTONCINODIPOTENZIAMENTOPRESODALLABARRA[MATTONCINODIPOTENZIAMENTO,TIPODIMATTONCINODIPOTENZIAMENTO]
  2210.     Inc YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)
  2211.     Proc MATTONCINODIPOTENZIAMENTOUSCITODALCAMPODIGIOCO[MATTONCINODIPOTENZIAMENTO]
  2212.    End If 
  2213.   Next MATTONCINODIPOTENZIAMENTO
  2214.  Else 
  2215.   For MATTONCINODIPOTENZIAMENTO=0 To MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1
  2216.    TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)
  2217.    If TIPODIMATTONCINODIPOTENZIAMENTO=0
  2218.     If MATTONCINO>0
  2219.      MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=Rnd(29)+1
  2220.      XMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=X0ZONA(MATTONCINO-1)
  2221.      YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=Y0ZONA(MATTONCINO-1)
  2222.     Else If MATTONCINO<0
  2223.      MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=-MATTONCINO
  2224.      XMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=XBARRA-9
  2225.      YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=-9
  2226.     End If 
  2227.     Exit 
  2228.    End If 
  2229.   Next MATTONCINODIPOTENZIAMENTO
  2230.  End If 
  2231. End Proc
  2232. Procedure MATTONCINOCOLPITODALLAPALLINA[PALLINA]
  2233.  'check if a brick has been hitted by the specified ball  
  2234.  XPALLINA=Int(XPALLINA#(PALLINA)) : YPALLINA=Int(YPALLINA#(PALLINA))
  2235.  MATTONCINO=Zone(XPALLINA,YPALLINA)
  2236.  If MATTONCINO>0
  2237.   MATTONELLA=MATTONCINO(MATTONCINO-1)
  2238.   If MATTONELLA>0
  2239.    If MATTONELLA<10
  2240.     MATTONCINOELIMINATODALLAPALLINA=VERO
  2241.    Else If MATTONELLA>9 and MATTONELLA<28
  2242.     Add MATTONELLA,-9
  2243.     MATTONCINO(MATTONCINO-1)=MATTONELLA
  2244.     Proc RIDISEGNODELMATTONCINO[MATTONCINO,500]
  2245.    Else 
  2246.     Proc MATTONCINIDIPOTENZIAMENTO[MATTONCINO,Rnd(9)]
  2247.     MATTONCINOELIMINABILESOLODALRAGGIOLASER=VERO
  2248.    End If 
  2249.    If MATTONCINOELIMINATODALLAPALLINA=VERO
  2250.     Dec MATTONCINI : Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
  2251.     Proc MATTONCINIDIPOTENZIAMENTO[MATTONCINO,Rnd(19)]
  2252.     ESPLOSIONEMATTONCINO(MATTONCINO-1)=1
  2253.     MATTONCINO(MATTONCINO-1)=0
  2254.     Proc RIDISEGNODELMATTONCINO[MATTONCINO,500]
  2255.    End If 
  2256.    Y0MATTONCINO=Y0ZONA(MATTONCINO-1)
  2257.    Y1MATTONCINO=Y0MATTONCINO+9
  2258.    If RIMBALZODELLEPALLINESUIMATTONCINI=VERO
  2259.     If YPALLINA<Y1MATTONCINO and YPALLINA>Y0MATTONCINO
  2260.      DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
  2261.     Else 
  2262.      DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  2263.     End If 
  2264.     If MATTONCINOELIMINABILESOLODALRAGGIOLASER=VERO
  2265.      If EFFETTISONORICARICATI=2
  2266.       Sam Play VOCE,3,8363*SEMITONO#^4 : Proc VOCESEGUENTE
  2267.      Else If EFFETTISONORICARICATI=1
  2268.       Bell 40
  2269.      End If 
  2270.     Else 
  2271.      If EFFETTISONORICARICATI=2
  2272.       If MATTONCINOELIMINATODALLAPALLINA=VERO
  2273.        Sam Play VOCE,19
  2274.       Else 
  2275.        Sam Play VOCE,3
  2276.       End If 
  2277.       Proc VOCESEGUENTE
  2278.      Else If EFFETTISONORICARICATI=1
  2279.       Boom 
  2280.      End If 
  2281.     End If 
  2282.    Else 
  2283.     If MATTONCINOELIMINABILESOLODALRAGGIOLASER=VERO
  2284.      If EFFETTISONORICARICATI=2
  2285.       Sam Play VOCE,3 : Proc VOCESEGUENTE
  2286.      Else If EFFETTISONORICARICATI=1
  2287.       Bell 60
  2288.      End If 
  2289.     Else 
  2290.      If EFFETTISONORICARICATI=2
  2291.       If MATTONCINOELIMINATODALLAPALLINA=VERO
  2292.        Sam Play VOCE,19
  2293.       Else 
  2294.        Sam Play VOCE,6
  2295.       End If 
  2296.       Proc VOCESEGUENTE
  2297.      Else If EFFETTISONORICARICATI=1
  2298.       Bell 50
  2299.      End If 
  2300.     End If 
  2301.    End If 
  2302.   End If 
  2303.  End If 
  2304. End Proc
  2305. Procedure MATTONCINOCOLPITODALRAGGIOLASER
  2306.  'check if a brick has been hitted by the laser ray 
  2307.  If RAGGIOLASERSPARATO=VERO
  2308.   MATTONCINO=Zone(XLASER,YLASER)
  2309.   If MATTONCINO>0
  2310.    MATTONELLA=MATTONCINO(MATTONCINO-1)
  2311.    If MATTONELLA>0
  2312.     If MATTONELLA<10
  2313.      MATTONCINOELIMINATODALRAGGIOLASER=VERO
  2314.     Else If MATTONELLA>9 and MATTONELLA<28
  2315.      Proc CANCELLAILRAGGIOLASER
  2316.      Add MATTONELLA,-9
  2317.      MATTONCINO(MATTONCINO-1)=MATTONELLA
  2318.      Proc RIDISEGNODELMATTONCINO[MATTONCINO,500]
  2319.     Else 
  2320.      If MATTONELLA=28
  2321.       MATTONCINOELIMINATODALRAGGIOLASER=VERO
  2322.      Else If MATTONELLA=29 and LASER>1
  2323.       MATTONCINOELIMINATODALRAGGIOLASER=VERO
  2324.      Else If MATTONELLA=30 and LASER=3
  2325.       MATTONCINOELIMINATODALRAGGIOLASER=VERO
  2326.      Else If MATTONELLA=31
  2327.       RAGGIOLASERRIFLESSO=VERO
  2328.       QUESTOEILMATTONCINOCHEHARIFLESSOILRAGGIOLASER=VERO
  2329.       MATTONCINOELIMINATODALRAGGIOLASER=VERO
  2330.      Else If MATTONELLA=32 and LASER>1
  2331.       RAGGIOLASERRIFLESSO=VERO
  2332.       QUESTOEILMATTONCINOCHEHARIFLESSOILRAGGIOLASER=VERO
  2333.       MATTONCINOELIMINATODALRAGGIOLASER=VERO
  2334.      Else If MATTONELLA=33 and LASER=3
  2335.       RAGGIOLASERRIFLESSO=VERO
  2336.       QUESTOEILMATTONCINOCHEHARIFLESSOILRAGGIOLASER=VERO
  2337.       MATTONCINOELIMINATODALRAGGIOLASER=VERO
  2338.      End If 
  2339.     End If 
  2340.     If MATTONCINOELIMINATODALRAGGIOLASER=VERO
  2341.      If RAGGIOLASERRIFLESSO=FALSO or QUESTOEILMATTONCINOCHEHARIFLESSOILRAGGIOLASER=FALSO
  2342.       Proc CANCELLAILRAGGIOLASER
  2343.      End If 
  2344.      ESPLOSIONEMATTONCINO(MATTONCINO-1)=1
  2345.      Dec MATTONCINI : Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
  2346.      Proc MATTONCINIDIPOTENZIAMENTO[MATTONCINO,Rnd(9)]
  2347.      MATTONCINO(MATTONCINO-1)=0
  2348.      Proc RIDISEGNODELMATTONCINO[MATTONCINO,500]
  2349.      If EFFETTISONORICARICATI=2
  2350.       Sam Play VOCE,19 : Proc VOCESEGUENTE
  2351.      Else If EFFETTISONORICARICATI=1
  2352.       Boom 
  2353.      End If 
  2354.     End If 
  2355.    End If 
  2356.   End If 
  2357.  End If 
  2358. End Proc
  2359. Procedure MATTONCINODIPOTENZIAMENTOPRESODALLABARRA[MATTONCINODIPOTENZIAMENTO,TIPODIMATTONCINODIPOTENZIAMENTO]
  2360.  'check if the bar has met the specified bonus brick  
  2361.  If Bob Col(OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
  2362.   If TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINIDIPOTENZIAMENTO
  2363.    MATTONCINODIPOTENZIAMENTOASORPRESA=VERO
  2364.    Add PUNTEGGIO,20
  2365.   Else 
  2366.    Add PUNTEGGIO,10
  2367.   End If 
  2368.   Proc MOSTRAILPUNTEGGIO[VERO]
  2369.   Proc CANCELLAILMATTONCINODIPOTENZIAMENTO[MATTONCINODIPOTENZIAMENTO]
  2370.   Repeat 
  2371.    If TIPODIMATTONCINODIPOTENZIAMENTO=1 : Rem a(dd a )b(all in the game field) 
  2372.     For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  2373.      If PALLINA(PALLINA)=FALSO
  2374.       PALLINA(PALLINA)=VERO
  2375.       XPALLINA#(PALLINA)=XBARRA
  2376.       YPALLINA#(PALLINA)=YBARRA-4
  2377.       VELOCITADELLAPALLINA#(PALLINA)=1
  2378.       D1REZIONEXPALLINA=Rnd(1)
  2379.       If D1REZIONEXPALLINA=1
  2380.        DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)
  2381.       Else 
  2382.        DELTAXPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
  2383.       End If 
  2384.       DELTAYPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
  2385.       Inc PALLINEINCAMPO
  2386.       Exit 
  2387.      End If 
  2388.     Next 
  2389.     If EFFETTISONORICARICATI=2
  2390.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  2391.     Else If EFFETTISONORICARICATI=1
  2392.      Bell 30
  2393.     End If 
  2394.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  2395.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=2 : Rem b(all)+  
  2396.     If _BARRE<1000
  2397.      Inc _BARRE : Proc MOSTRALEBARRERIMASTE
  2398.     End If 
  2399.     If EFFETTISONORICARICATI=2
  2400.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  2401.     Else If EFFETTISONORICARICATI=1
  2402.      Bell 30
  2403.     End If 
  2404.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  2405.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=3 : Rem b(all)-    
  2406.     If _BARRE>0
  2407.      Dec _BARRE : Proc MOSTRALEBARRERIMASTE
  2408.     End If 
  2409.     If EFFETTISONORICARICATI=2
  2410.      Sam Play VOCE,17 : Proc VOCESEGUENTE
  2411.     Else If EFFETTISONORICARICATI=1
  2412.      Bell 10
  2413.     End If 
  2414.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  2415.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=4 : Rem b(all)?
  2416.     If Rnd(1)=1
  2417.      TIPODIMATTONCINODIPOTENZIAMENTO=2
  2418.     Else 
  2419.      TIPODIMATTONCINODIPOTENZIAMENTO=3
  2420.     End If 
  2421.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=5 : Rem B(ar)+ 
  2422.     If LUNGHEZZADELLABARRA<2
  2423.      Inc LUNGHEZZADELLABARRACAMBIATA
  2424.     End If 
  2425.     If EFFETTISONORICARICATI=2
  2426.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  2427.     Else If EFFETTISONORICARICATI=1
  2428.      Bell 30
  2429.     End If 
  2430.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  2431.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=6 : Rem B(ar)- 
  2432.     If LUNGHEZZADELLABARRA>0
  2433.      Dec LUNGHEZZADELLABARRACAMBIATA
  2434.     End If 
  2435.     If EFFETTISONORICARICATI=2
  2436.      Sam Play VOCE,17 : Proc VOCESEGUENTE
  2437.     Else If EFFETTISONORICARICATI=1
  2438.      Bell 10
  2439.     End If 
  2440.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  2441.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=7 : Rem B(ar)? 
  2442.     If Rnd(1)=1
  2443.      TIPODIMATTONCINODIPOTENZIAMENTO=5
  2444.     Else 
  2445.      TIPODIMATTONCINODIPOTENZIAMENTO=6
  2446.     End If 
  2447.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=8 : Rem D(uck) 
  2448.     _PAPEROINCAMPO= Not _PAPEROINCAMPO
  2449.     If _PAPEROINCAMPO=VERO
  2450.      If EFFETTISONORICARICATI=2
  2451.       Sam Play VOCE,16 : Proc VOCESEGUENTE
  2452.      Else If EFFETTISONORICARICATI=1
  2453.       Bell 30
  2454.      End If 
  2455.     Else 
  2456.      Proc CANCELLAILPAPERO
  2457.      If EFFETTISONORICARICATI=2
  2458.       Sam Play VOCE,17 : Proc VOCESEGUENTE
  2459.      Else If EFFETTISONORICARICATI=1
  2460.       Bell 10
  2461.      End If 
  2462.     End If 
  2463.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  2464.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=9 : Rem G(lue) 
  2465.     C0LLA= Not C0LLA
  2466.     If C0LLA=VERO
  2467.      If EFFETTISONORICARICATI=2
  2468.       Sam Play VOCE,16 : Proc VOCESEGUENTE
  2469.      Else If EFFETTISONORICARICATI=1
  2470.       Bell 30
  2471.      End If 
  2472.     Else 
  2473.      If EFFETTISONORICARICATI=2
  2474.       Sam Play VOCE,17 : Proc VOCESEGUENTE
  2475.      Else If EFFETTISONORICARICATI=1
  2476.       Bell 10
  2477.      End If 
  2478.     End If 
  2479.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  2480.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=10 : Rem L(aser)+ 
  2481.     If LASER=-1
  2482.      LASER=1
  2483.     Else If LASER=1
  2484.      LASER=2
  2485.     Else If LASER=2
  2486.      LASER=3
  2487.     End If 
  2488.     If EFFETTISONORICARICATI=2
  2489.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  2490.     Else If EFFETTISONORICARICATI=1
  2491.      Bell 30
  2492.     End If 
  2493.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  2494.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=11 : Rem L(aser)- 
  2495.     If LASER>0
  2496.      Dec LASER
  2497.     End If 
  2498.     If EFFETTISONORICARICATI=2
  2499.      Sam Play VOCE,17 : Proc VOCESEGUENTE
  2500.     Else If EFFETTISONORICARICATI=1
  2501.      Bell 10
  2502.     End If 
  2503.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  2504.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=12 : Rem L(aser)? 
  2505.     If Rnd(1)=1
  2506.      TIPODIMATTONCINODIPOTENZIAMENTO=10
  2507.     Else 
  2508.      TIPODIMATTONCINODIPOTENZIAMENTO=11
  2509.     End If 
  2510.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=13 : Rem N(ext level) 
  2511.     MATTONCINIRIMASTI=MATTONCINI : MATTONCINI=0
  2512.     If EFFETTISONORICARICATI=2
  2513.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  2514.     Else If EFFETTISONORICARICATI=1
  2515.      Bell 30
  2516.     End If 
  2517.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  2518.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=14 : Rem P(oints)+  
  2519.     If MATTONCINODIPOTENZIAMENTOASORPRESA=VERO
  2520.      If PUNTEGGIO<9999800
  2521.       Add PUNTEGGIO,180
  2522.      End If 
  2523.     Else 
  2524.      If PUNTEGGIO<9999900
  2525.       Add PUNTEGGIO,90
  2526.      End If 
  2527.     End If 
  2528.     Proc MOSTRAILPUNTEGGIO[VERO]
  2529.     If EFFETTISONORICARICATI=2
  2530.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  2531.     Else If EFFETTISONORICARICATI=1
  2532.      Bell 30
  2533.     End If 
  2534.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  2535.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=15 : Rem P(oints)-  
  2536.     If MATTONCINODIPOTENZIAMENTOASORPRESA=VERO
  2537.      Add PUNTEGGIO,-220
  2538.     Else 
  2539.      Add PUNTEGGIO,-110
  2540.     End If 
  2541.     If PUNTEGGIO<0
  2542.      PUNTEGGIO=0
  2543.     End If 
  2544.     Proc MOSTRAILPUNTEGGIO[VERO]
  2545.     If EFFETTISONORICARICATI=2
  2546.      Sam Play VOCE,17 : Proc VOCESEGUENTE
  2547.     Else If EFFETTISONORICARICATI=1
  2548.      Bell 10
  2549.     End If 
  2550.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  2551.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=16 : Rem P(oints)?
  2552.     If Rnd(1)=1
  2553.      TIPODIMATTONCINODIPOTENZIAMENTO=14
  2554.     Else 
  2555.      TIPODIMATTONCINODIPOTENZIAMENTO=15
  2556.     End If 
  2557.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=17 : Rem R(ow)+ 
  2558.     If RIGA<3
  2559.      T0GLILARIGA=RIGA : Inc RIGA
  2560.     End If 
  2561.     If EFFETTISONORICARICATI=2
  2562.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  2563.     Else If EFFETTISONORICARICATI=1
  2564.      Bell 30
  2565.     End If 
  2566.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  2567.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=18 : Rem R(ow)- 
  2568.     If RIGA>0
  2569.      T0GLILARIGA=RIGA : RIGA=0
  2570.     End If 
  2571.     If EFFETTISONORICARICATI=2
  2572.      Sam Play VOCE,17 : Proc VOCESEGUENTE
  2573.     Else If EFFETTISONORICARICATI=1
  2574.      Bell 10
  2575.     End If 
  2576.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  2577.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=19 : Rem R(ow)? 
  2578.     If Rnd(1)=1
  2579.      TIPODIMATTONCINODIPOTENZIAMENTO=17
  2580.     Else 
  2581.      TIPODIMATTONCINODIPOTENZIAMENTO=18
  2582.     End If 
  2583.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=20 : Rem S(peed)+ 
  2584.     For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  2585.      If PALLINA(PALLINA)=VERO and VELOCITADELLAPALLINA#(PALLINA)<8
  2586.       VELOCITADELLAPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)+0.5
  2587.       If LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)
  2588.        DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*2*Sgn(DELTAXPALLINA#(PALLINA))
  2589.        DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)/2.0*Sgn(DELTAYPALLINA#(PALLINA))
  2590.       Else 
  2591.        DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAXPALLINA#(PALLINA))
  2592.        DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAYPALLINA#(PALLINA))
  2593.       End If 
  2594.      End If 
  2595.     Next PALLINA
  2596.     If EFFETTISONORICARICATI=2
  2597.      Sam Play VOCE,17 : Proc VOCESEGUENTE
  2598.     Else If EFFETTISONORICARICATI=1
  2599.      Bell 10
  2600.     End If 
  2601.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  2602.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=21 : Rem S(peed)- 
  2603.     For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  2604.      If PALLINA(PALLINA)=VERO and VELOCITADELLAPALLINA#(PALLINA)>0.5
  2605.       VELOCITADELLAPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)-0.5
  2606.       If LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)
  2607.        DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*2*Sgn(DELTAXPALLINA#(PALLINA))
  2608.        DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)/2.0*Sgn(DELTAYPALLINA#(PALLINA))
  2609.       Else 
  2610.        DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAXPALLINA#(PALLINA))
  2611.        DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAYPALLINA#(PALLINA))
  2612.       End If 
  2613.      End If 
  2614.     Next PALLINA
  2615.     If EFFETTISONORICARICATI=2
  2616.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  2617.     Else If EFFETTISONORICARICATI=1
  2618.      Bell 30
  2619.     End If 
  2620.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  2621.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=22 : Rem S(peed)? 
  2622.     If Rnd(1)=1
  2623.      TIPODIMATTONCINODIPOTENZIAMENTO=20
  2624.     Else 
  2625.      TIPODIMATTONCINODIPOTENZIAMENTO=21
  2626.     End If 
  2627.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=23 : Rem (bar) V(elocity)+
  2628.     If RITARDOMASSIMODELLABARRA>0
  2629.      Add RITARDOMASSIMODELLABARRA,-2
  2630.     End If 
  2631.     If EFFETTISONORICARICATI=2
  2632.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  2633.     Else If EFFETTISONORICARICATI=1
  2634.      Bell 30
  2635.     End If 
  2636.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  2637.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=24 : Rem (bar) V(elocity)-
  2638.     If RITARDOMASSIMODELLABARRA<50
  2639.      Add RITARDOMASSIMODELLABARRA,2
  2640.     End If 
  2641.     If EFFETTISONORICARICATI=2
  2642.      Sam Play VOCE,17 : Proc VOCESEGUENTE
  2643.     Else If EFFETTISONORICARICATI=1
  2644.      Bell 10
  2645.     End If 
  2646.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  2647.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=25 : Rem (bar) V(elocity)?
  2648.     If Rnd(1)=1
  2649.      TIPODIMATTONCINODIPOTENZIAMENTO=23
  2650.     Else 
  2651.      TIPODIMATTONCINODIPOTENZIAMENTO=24
  2652.     End If 
  2653.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=26 : Rem X(treme) 
  2654.     RIMBALZODELLEPALLINESUIMATTONCINI= Not RIMBALZODELLEPALLINESUIMATTONCINI
  2655.     If RIMBALZODELLEPALLINESUIMATTONCINI=FALSO
  2656.      If EFFETTISONORICARICATI=2
  2657.       Sam Play VOCE,16 : Proc VOCESEGUENTE
  2658.      Else If EFFETTISONORICARICATI=1
  2659.       Bell 30
  2660.      End If 
  2661.     Else 
  2662.      If EFFETTISONORICARICATI=2
  2663.       Sam Play VOCE,17 : Proc VOCESEGUENTE
  2664.      Else If EFFETTISONORICARICATI=1
  2665.       Bell 10
  2666.      End If 
  2667.     End If 
  2668.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  2669.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=27 : Rem y+ 
  2670.     If YBARRA<247
  2671.      Add YBARRA,5
  2672.     End If 
  2673.     If EFFETTISONORICARICATI=2
  2674.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  2675.     Else If EFFETTISONORICARICATI=1
  2676.      Bell 30
  2677.     End If 
  2678.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  2679.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=28 : Rem y- 
  2680.     If YBARRA>197
  2681.      Add YBARRA,-5
  2682.     End If 
  2683.     If EFFETTISONORICARICATI=2
  2684.      Sam Play VOCE,17 : Proc VOCESEGUENTE
  2685.     Else If EFFETTISONORICARICATI=1
  2686.      Bell 10
  2687.     End If 
  2688.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  2689.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=29 : Rem b(all)?
  2690.     If Rnd(1)=1
  2691.      TIPODIMATTONCINODIPOTENZIAMENTO=27
  2692.     Else 
  2693.      TIPODIMATTONCINODIPOTENZIAMENTO=28
  2694.     End If 
  2695.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINIDIPOTENZIAMENTO : Rem ?
  2696.     TIPODIMATTONCINODIPOTENZIAMENTO=Rnd(18)+1
  2697.    End If 
  2698.   Until TIPODIMATTONCINODIPOTENZIAMENTO=0
  2699.  End If 
  2700. End Proc
  2701. Procedure MATTONCINODIPOTENZIAMENTOUSCITODALCAMPODIGIOCO[MATTONCINODIPOTENZIAMENTO]
  2702.  'check if the specified bonus brick has gone out of the game field 
  2703.  If YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)>255
  2704.   Proc CANCELLAILMATTONCINODIPOTENZIAMENTO[MATTONCINODIPOTENZIAMENTO]
  2705.  End If 
  2706. End Proc
  2707. Procedure METTIILPANNELLO
  2708.  'put the panel in the game field 
  2709.  XPANNELLO=Screen Width-LARGHEZZAPANNELLO
  2710.  Paste Bob XPANNELLO,0,51 : Paste Bob XPANNELLO,128,52
  2711. End Proc
  2712. Procedure METTIECONTAIMATTONCINI
  2713.  'put the bricks in the game field and count them 
  2714.  MATTONCINI=0
  2715.  For MATTONCINO=0 To 246
  2716.   If MATTONCINO(MATTONCINO)>0
  2717.    Paste Bob X0ZONA(MATTONCINO),Y0ZONA(MATTONCINO),82+MATTONCINO(MATTONCINO)
  2718.    Inc MATTONCINI
  2719.   Else 
  2720.    Ink 0 : Bar X0ZONA(MATTONCINO),Y0ZONA(MATTONCINO) To X0ZONA(MATTONCINO)+19,Y0ZONA(MATTONCINO)+9
  2721.   End If 
  2722.  Next MATTONCINO
  2723. End Proc
  2724. Procedure METTIILGIOCOINPAUSA
  2725.  'pause the game
  2726.  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1]
  2727.  MESSAGGIO$="The game is paused."+ACAPO$
  2728.  MESSAGGIO$=MESSAGGIO$+"Press a (mouse) key to continue..."
  2729.  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[MESSAGGIO$,22,20,1,0]
  2730.  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
  2731. End Proc
  2732. Procedure MOLLAILGUANO
  2733.  'drop the guano  
  2734.  If GUANOINCAMPO=VERO
  2735.   If GUANOMOLLATO=FALSO
  2736.    XGUANO=XPAPEROALIENO : YGUANO=YPAPEROALIENO+35 : GUANOMOLLATO=VERO
  2737.   Else 
  2738.    Bob OGGETTOGUANO,XGUANO,YGUANO,IMMAGINEGUANO
  2739.    Proc LABARRAESTATACOLPITADALGUANO
  2740.    Proc ILGUANOEUSCITODALCAMPODIGIOCO
  2741.    Add YGUANO,3
  2742.   End If 
  2743.  End If 
  2744. End Proc
  2745. Procedure MOSTRAICREDITI
  2746.  'show the credits  
  2747.  CREDITI$="EsseEmmeErre Sofware Solutions"+ACAPO$
  2748.  CREDITI$=CREDITI$+"presents..."+ACAPO$
  2749.  CREDITI$=CREDITI$+"************"+ACAPO$
  2750.  CREDITI$=CREDITI$+"* MATTONITE *"+ACAPO$
  2751.  CREDITI$=CREDITI$+"************"+ACAPO$
  2752.  CREDITI$=CREDITI$+"by Stefano Maria Regattin"+ACAPO$
  2753.  CREDITI$=CREDITI$+"piazza Pietro Gasparri, 4/U"+ACAPO$
  2754.  CREDITI$=CREDITI$+"20161 Milano (Milan) Italia (Italy)"+ACAPO$
  2755.  CREDITI$=CREDITI$+"http://xoomer.virgilio.it/aregat/"+ACAPO$
  2756.  CREDITI$=CREDITI$+"mattonite@esseemmeerre.mailshell.com"+ACAPO$
  2757.  CREDITI$=CREDITI$+"ICQ#: 113412377"+ACAPO$
  2758.  CREDITI$=CREDITI$+"This game, its editor and the related source"+ACAPO$
  2759.  CREDITI$=CREDITI$+"codes are freely shared out."+ACAPO$
  2760.  CREDITI$=CREDITI$+"They have been created by AMOS Professional 2.0"+ACAPO$
  2761.  CREDITI$=CREDITI$+"and compiled by AMOS Professional Compiler 2.0."+ACAPO$
  2762.  CREDITI$=CREDITI$+"The source codes don't require any additional"+ACAPO$
  2763.  CREDITI$=CREDITI$+"extension."+ACAPO$
  2764.  CREDITI$=CREDITI$+"If you will create a new game starting from these"+ACAPO$
  2765.  CREDITI$=CREDITI$+"source codes, let me know and don't forget to"+ACAPO$
  2766.  CREDITI$=CREDITI$+"email me and mention me in your resulting creation."+ACAPO$
  2767.  CREDITI$=CREDITI$+"One day I have asked to my major sister Antonella"+ACAPO$
  2768.  CREDITI$=CREDITI$+"if she would liked I created a game for her,"+ACAPO$
  2769.  CREDITI$=CREDITI$+"assuring her I was able to create almost any"+ACAPO$
  2770.  CREDITI$=CREDITI$+"kind of game she wanted."+ACAPO$
  2771.  CREDITI$=CREDITI$+"The answer was yes and she specified a game"+ACAPO$
  2772.  CREDITI$=CREDITI$+"with a bar, a bouncing ball over the bar and"+ACAPO$
  2773.  CREDITI$=CREDITI$+"dozens of bricks deletable by the ball hit,"+ACAPO$
  2774.  CREDITI$=CREDITI$+"gaining points for the hits."+ACAPO$
  2775.  CREDITI$=CREDITI$+"So I started the development of this game and"+ACAPO$
  2776.  CREDITI$=CREDITI$+"she called it Mattonite, that in italian means"+ACAPO$
  2777.  CREDITI$=CREDITI$+"brickache."+ACAPO$
  2778.  CREDITI$=CREDITI$+"The purpose of the game is simple: destroy all"+ACAPO$
  2779.  CREDITI$=CREDITI$+"the bricks by the ball hits to overcome all"+ACAPO$
  2780.  CREDITI$=CREDITI$+"the levels and collect bonus bricks to improve"+ACAPO$
  2781.  CREDITI$=CREDITI$+"playability."+ACAPO$
  2782.  CREDITI$=CREDITI$+"The duck eats all the bricks, but avoid the alien"+ACAPO$
  2783.  CREDITI$=CREDITI$+"duck's guano!"+ACAPO$
  2784.  CREDITI$=CREDITI$+"Avoid the reflected laser ray also!"+ACAPO$
  2785.  CREDITI$=CREDITI$+"Don't hit the mortal boing with the bar!"+ACAPO$
  2786.  CREDITI$=CREDITI$+"You must hit this by a ball or by the laser ray."+ACAPO$
  2787.  CREDITI$=CREDITI$+"The three flashing cyan digits report the bars"+ACAPO$
  2788.  CREDITI$=CREDITI$+"left."+ACAPO$
  2789.  CREDITI$=CREDITI$+"The three flashing orange digits report the"+ACAPO$
  2790.  CREDITI$=CREDITI$+"current level."+ACAPO$
  2791.  CREDITI$=CREDITI$+"The three flashing rainbow colours digits report"+ACAPO$
  2792.  CREDITI$=CREDITI$+"the score position relative to the top hundred"+ACAPO$
  2793.  CREDITI$=CREDITI$+"scores."+ACAPO$
  2794.  CREDITI$=CREDITI$+"The seven flashing cyan digits column report"+ACAPO$
  2795.  CREDITI$=CREDITI$+"the score."+ACAPO$
  2796.  CREDITI$=CREDITI$+"The seven flashing orange digits column report"+ACAPO$
  2797.  CREDITI$=CREDITI$+"the first position score."+ACAPO$
  2798.  CREDITI$=CREDITI$+"The seven flashing rainbow colour digits column"+ACAPO$
  2799.  CREDITI$=CREDITI$+"report the current level bonus."+ACAPO$
  2800.  CREDITI$=CREDITI$+"Press the space bar to shock the balls."+ACAPO$
  2801.  CREDITI$=CREDITI$+"Press the shift keys to fire the laser ray over"+ACAPO$
  2802.  CREDITI$=CREDITI$+"the bricks to hit the boings or, better, to hit"+ACAPO$
  2803.  CREDITI$=CREDITI$+"the ballthief!"+ACAPO$
  2804.  CREDITI$=CREDITI$+"Press the P key to pause the game."+ACAPO$
  2805.  CREDITI$=CREDITI$+"Press a (mouse) key to scroll quickly the text"+ACAPO$
  2806.  CREDITI$=CREDITI$+"or press the Esc key to leave the text."+ACAPO$
  2807.  CREDITI$=CREDITI$+"This is the end...Enjoy!"
  2808.  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[CREDITI$,22,22,1,250]
  2809. End Proc
  2810. Procedure MOSTRAILBONUS[M0DO]
  2811.  'show the bonus  
  2812.  If M0DO=VERO
  2813.   CIFRA=BONUS/1000000 mod 10
  2814.   Paste Bob 305,120,73+CIFRA
  2815.   CIFRA=BONUS/100000 mod 10
  2816.   Paste Bob 305,138,73+CIFRA
  2817.   CIFRA=BONUS/10000 mod 10
  2818.   Paste Bob 305,156,73+CIFRA
  2819.   CIFRA=BONUS/1000 mod 10
  2820.   Paste Bob 305,174,73+CIFRA
  2821.   CIFRA=BONUS/100 mod 10
  2822.   Paste Bob 305,192,73+CIFRA
  2823.   CIFRA=BONUS/10 mod 10
  2824.   Paste Bob 305,210,73+CIFRA
  2825.   CIFRA=BONUS mod 10
  2826.   Paste Bob 305,228,73+CIFRA
  2827.  Else 
  2828.   CIFRA=BONUS mod 10
  2829.   Paste Bob 305,228,73+CIFRA
  2830.   If CIFRA=9
  2831.    CIFRA=BONUS/10 mod 10
  2832.    Paste Bob 305,210,73+CIFRA
  2833.    If CIFRA=9
  2834.     CIFRA=BONUS/100 mod 10
  2835.     Paste Bob 305,192,73+CIFRA
  2836.     If CIFRA=9
  2837.      CIFRA=BONUS/1000 mod 10
  2838.      Paste Bob 305,174,73+CIFRA
  2839.      If CIFRA=9
  2840.       CIFRA=BONUS/10000 mod 10
  2841.       Paste Bob 305,156,73+CIFRA
  2842.       If CIFRA=9
  2843.        CIFRA=BONUS/100000 mod 10
  2844.        Paste Bob 305,138,73+CIFRA
  2845.        If CIFRA=9
  2846.         CIFRA=BONUS/1000000 mod 10
  2847.         Paste Bob 305,120,73+CIFRA
  2848.        End If 
  2849.       End If 
  2850.      End If 
  2851.     End If 
  2852.    End If 
  2853.   End If 
  2854.  End If 
  2855. End Proc
  2856. Procedure MOSTRAILLASER
  2857.  'show the laser beam over the bar  
  2858.  If LASER>0
  2859.   Bob OGGETTOLASER,Int(XBARRA),YBARRA,IMMAGINELASER+LASER
  2860.  Else If LASER=0
  2861.   Proc T0GLIILLASER
  2862.   LASER=-1
  2863.  End If 
  2864. End Proc
  2865. Procedure MOSTRAILLIVELLO
  2866.  'shov the level  
  2867.  CIFRA=LIVELLO/100 mod 10
  2868.  Paste Bob 273,29,63+CIFRA
  2869.  CIFRA=LIVELLO/10 mod 10
  2870.  Paste Bob 289,29,63+CIFRA
  2871.  CIFRA=LIVELLO mod 10
  2872.  Paste Bob 305,29,63+CIFRA
  2873. End Proc
  2874. Procedure MOSTRAILPUNTEGGIO[M0DO]
  2875.  'show the score  
  2876.  If M0DO=VERO
  2877.   CIFRA=PUNTEGGIO/1000000 mod 10
  2878.   Paste Bob 273,120,53+CIFRA
  2879.   CIFRA=PUNTEGGIO/100000 mod 10
  2880.   Paste Bob 273,138,53+CIFRA
  2881.   CIFRA=PUNTEGGIO/10000 mod 10
  2882.   Paste Bob 273,156,53+CIFRA
  2883.   CIFRA=PUNTEGGIO/1000 mod 10
  2884.   Paste Bob 273,174,53+CIFRA
  2885.   CIFRA=PUNTEGGIO/100 mod 10
  2886.   Paste Bob 273,192,53+CIFRA
  2887.   CIFRA=PUNTEGGIO/10 mod 10
  2888.   Paste Bob 273,210,53+CIFRA
  2889.   CIFRA=PUNTEGGIO mod 10
  2890.   Paste Bob 273,228,53+CIFRA
  2891.  Else 
  2892.   CIFRA=PUNTEGGIO mod 10
  2893.   Paste Bob 273,228,53+CIFRA
  2894.   If CIFRA=0
  2895.    CIFRA=PUNTEGGIO/10 mod 10
  2896.    Paste Bob 273,210,53+CIFRA
  2897.    If CIFRA=0
  2898.     CIFRA=PUNTEGGIO/100 mod 10
  2899.     Paste Bob 273,192,53+CIFRA
  2900.     If CIFRA=0
  2901.      CIFRA=PUNTEGGIO/1000 mod 10
  2902.      Paste Bob 273,174,53+CIFRA
  2903.      If CIFRA=0
  2904.       CIFRA=PUNTEGGIO/10000 mod 10
  2905.       Paste Bob 273,156,53+CIFRA
  2906.       If CIFRA=0
  2907.        CIFRA=PUNTEGGIO/100000 mod 10
  2908.        Paste Bob 273,138,53+CIFRA
  2909.        If CIFRA=0
  2910.         CIFRA=PUNTEGGIO/1000000 mod 10
  2911.         Paste Bob 273,120,53+CIFRA
  2912.        End If 
  2913.       End If 
  2914.      End If 
  2915.     End If 
  2916.    End If 
  2917.   End If 
  2918.  End If 
  2919.  If MOSTRASOLOILPUNTEGGIOMASSIMO=1 or POSIZIONE=1
  2920.   If PUNTEGGIO>PUNTEGGIOMASSIMO
  2921.    PUNTEGGIOMASSIMO=PUNTEGGIO
  2922.    Proc MOSTRAILPUNTEGGIOMASSIMO[FALSO]
  2923.   End If 
  2924.  Else 
  2925.   PUNTEGGIOSUPERIORE=Val(PUNTEGGIODELGIOCATORE$(POSIZIONE-2))
  2926.   If PUNTEGGIO>PUNTEGGIOSUPERIORE
  2927.    Proc MOSTRALAPOSIZIONE
  2928.    Proc MOSTRAILPUNTEGGIOMASSIMO[VERO]
  2929.   End If 
  2930.  End If 
  2931. End Proc
  2932. Procedure MOSTRAILPUNTEGGIOMASSIMO[M0DO]
  2933.  'show the better or the best score 
  2934.  If MOSTRASOLOILPUNTEGGIOMASSIMO=1 or POSIZIONE=1
  2935.   PUNTEGGIOSUPERIORE=PUNTEGGIOMASSIMO
  2936.  Else 
  2937.   PUNTEGGIOSUPERIORE=Val(PUNTEGGIODELGIOCATORE$(POSIZIONE-2))
  2938.  End If 
  2939.  If M0DO=VERO
  2940.   CIFRA=PUNTEGGIOSUPERIORE/1000000 mod 10
  2941.   Paste Bob 289,120,63+CIFRA
  2942.   CIFRA=PUNTEGGIOSUPERIORE/100000 mod 10
  2943.   Paste Bob 289,138,63+CIFRA
  2944.   CIFRA=PUNTEGGIOSUPERIORE/10000 mod 10
  2945.   Paste Bob 289,156,63+CIFRA
  2946.   CIFRA=PUNTEGGIOSUPERIORE/1000 mod 10
  2947.   Paste Bob 289,174,63+CIFRA
  2948.   CIFRA=PUNTEGGIOSUPERIORE/100 mod 10
  2949.   Paste Bob 289,192,63+CIFRA
  2950.   CIFRA=PUNTEGGIOSUPERIORE/10 mod 10
  2951.   Paste Bob 289,210,63+CIFRA
  2952.   CIFRA=PUNTEGGIOSUPERIORE mod 10
  2953.   Paste Bob 289,228,63+CIFRA
  2954.  Else 
  2955.   CIFRA=PUNTEGGIOSUPERIORE mod 10
  2956.   Paste Bob 289,228,63+CIFRA
  2957.   If CIFRA=0
  2958.    CIFRA=PUNTEGGIOSUPERIORE/10 mod 10
  2959.    Paste Bob 289,210,63+CIFRA
  2960.    If CIFRA=0
  2961.     CIFRA=PUNTEGGIOSUPERIORE/100 mod 10
  2962.     Paste Bob 289,192,63+CIFRA
  2963.     If CIFRA=0
  2964.      CIFRA=PUNTEGGIOSUPERIORE/1000 mod 10
  2965.      Paste Bob 289,174,63+CIFRA
  2966.      If CIFRA=0
  2967.       CIFRA=PUNTEGGIOSUPERIORE/10000 mod 10
  2968.       Paste Bob 289,156,63+CIFRA
  2969.       If CIFRA=0
  2970.        CIFRA=PUNTEGGIOSUPERIORE/100000 mod 10
  2971.        Paste Bob 289,138,63+CIFRA
  2972.        If CIFRA=0
  2973.         CIFRA=PUNTEGGIOSUPERIORE/1000000 mod 10
  2974.         Paste Bob 289,120,63+CIFRA
  2975.        End If 
  2976.       End If 
  2977.      End If 
  2978.     End If 
  2979.    End If 
  2980.   End If 
  2981.  End If 
  2982. End Proc
  2983. Procedure MOSTRAILRAGGIOLASER
  2984.  'show the laser ray  
  2985.  If RAGGIOLASERSPARATO=VERO
  2986.   Bob OGGETTORAGGIOLASER,XLASER,YLASER,IMMAGINERAGGIOLASER
  2987.   If RAGGIOLASERRIFLESSO=VERO
  2988.    If YLASER<255
  2989.     Add YLASER,5
  2990.    Else 
  2991.     RAGGIOLASERRIFLESSO=FALSO
  2992.     Proc CANCELLAILRAGGIOLASER
  2993.    End If 
  2994.   Else 
  2995.    If YLASER>0
  2996.     Add YLASER,-5
  2997.    Else 
  2998.     Proc CANCELLAILRAGGIOLASER
  2999.    End If 
  3000.   End If 
  3001.   Bob Update 
  3002.  End If 
  3003. End Proc
  3004. Procedure MOSTRAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
  3005.  'show the top hundred player scores  
  3006.  If Exist(PUNTEGGI$) and CENTOGIOCATORI$<>""
  3007.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[CENTOGIOCATORI$,20,22,1,250]
  3008.  Else 
  3009.   NONCISONOGIOCATORI$="No players till now..."+ACAPO$
  3010.   NONCISONOGIOCATORI$=NONCISONOGIOCATORI$+"Press a (mouse) key to continue"
  3011.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[NONCISONOGIOCATORI$,21,20,1,250]
  3012.  End If 
  3013. End Proc
  3014. Procedure MOSTRAILTEMPOTRASCORSODIGIOCOESALUTAILGIOCATORE
  3015.  'show the game time and greets the player  
  3016.  MESSAGGIOFINALE$="The game is finished."+ACAPO$
  3017.  If TEMP0TRASCORSODIGIOCO>0
  3018.   GIORNI=TEMP0TRASCORSODIGIOCO/4320000 : GIORNI$=Str$(GIORNI)
  3019.   _ORE=TEMP0TRASCORSODIGIOCO/180000 mod 24 : _ORE$=Str$(_ORE)
  3020.   M1NUTI=TEMP0TRASCORSODIGIOCO/3000 mod 60 : M1NUTI$=Str$(M1NUTI)
  3021.   SECONDI=TEMP0TRASCORSODIGIOCO/50 mod 60 : SECONDI$=Str$(SECONDI)
  3022.   MESSAGGIOFINALE$=MESSAGGIOFINALE$+"You have played for"
  3023.   If GIORNI=1
  3024.    MESSAGGIOFINALE$=MESSAGGIOFINALE$+GIORNI$+" day,"
  3025.   Else 
  3026.    MESSAGGIOFINALE$=MESSAGGIOFINALE$+GIORNI$+" days,"
  3027.   End If 
  3028.   If _ORE=1
  3029.    MESSAGGIOFINALE$=MESSAGGIOFINALE$+_ORE$+" hour,"
  3030.   Else 
  3031.    MESSAGGIOFINALE$=MESSAGGIOFINALE$+_ORE$+" hours,"
  3032.   End If 
  3033.   MESSAGGIOFINALE$=MESSAGGIOFINALE$+ACAPO$
  3034.   If M1NUTI=1
  3035.    MESSAGGIOFINALE$=MESSAGGIOFINALE$+M1NUTI$+" minute and"
  3036.   Else 
  3037.    MESSAGGIOFINALE$=MESSAGGIOFINALE$+M1NUTI$+" minutes and"
  3038.   End If 
  3039.   If SECONDI=1
  3040.    MESSAGGIOFINALE$=MESSAGGIOFINALE$+SECONDI$+" second."
  3041.   Else 
  3042.    MESSAGGIOFINALE$=MESSAGGIOFINALE$+SECONDI$+" seconds."
  3043.   End If 
  3044.   MESSAGGIOFINALE$=MESSAGGIOFINALE$+ACAPO$
  3045.  End If 
  3046.  MESSAGGIOFINALE$=MESSAGGIOFINALE$+"I hope you have enjoyed."+ACAPO$
  3047.  MESSAGGIOFINALE$=MESSAGGIOFINALE$+"Bye bye!"
  3048.  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[MESSAGGIOFINALE$,20,22,1,1000]
  3049. End Proc
  3050. Procedure MOSTRALABARRA
  3051.  'show the bar  
  3052.  If LUNGHEZZADELLABARRA=0
  3053.   Bob OGGETTOCENTRODELLABARRA,Int(XBARRA),YBARRA,5
  3054.   Bob OGGETTOLATIDELLABARRA,Int(XBARRA),YBARRA,6
  3055.  Else If LUNGHEZZADELLABARRA=1
  3056.   Bob OGGETTOCENTRODELLABARRA,Int(XBARRA),YBARRA,1
  3057.   Bob OGGETTOLATIDELLABARRA,Int(XBARRA),YBARRA,2
  3058.  Else If LUNGHEZZADELLABARRA=2
  3059.   Bob OGGETTOCENTRODELLABARRA,Int(XBARRA),YBARRA,3
  3060.   Bob OGGETTOLATIDELLABARRA,Int(XBARRA),YBARRA,4
  3061.  End If 
  3062. End Proc
  3063. Procedure MOSTRALAPOSIZIONE
  3064.  'show the current player position  
  3065.  For POSIZIONE=1 To 100
  3066.   If PUNTEGGIO>Val(PUNTEGGIODELGIOCATORE$(POSIZIONE-1))
  3067.    Exit 
  3068.   Else If PUNTEGGIODELGIOCATORE$(POSIZIONE-1)=""
  3069.    Exit 
  3070.   End If 
  3071.  Next POSIZIONE
  3072.  CIFRA=POSIZIONE/100 mod 10
  3073.  Paste Bob 273,47,73+CIFRA
  3074.  CIFRA=POSIZIONE/10 mod 10
  3075.  Paste Bob 289,47,73+CIFRA
  3076.  CIFRA=POSIZIONE mod 10
  3077.  Paste Bob 305,47,73+CIFRA
  3078. End Proc
  3079. Procedure MOSTRALARIGA[TIPODIRIGA]
  3080.  'show the row  
  3081.  If TIPODIRIGA=1
  3082.   IMMAGINERIGA=IMMAGINERIGAUNO
  3083.  Else If TIPODIRIGA=2
  3084.   IMMAGINERIGA=IMMAGINERIGADUE
  3085.  Else If TIPODIRIGA=3
  3086.   IMMAGINERIGA=IMMAGINERIGATRE
  3087.  End If 
  3088.  If XRIGA>0
  3089.   Bob OGGETTORIGA,XRIGA,251,IMMAGINERIGA
  3090.  Else 
  3091.   If T0GLILARIGA>0
  3092.    Proc T0GLILARIGA
  3093.    T0GLILARIGA=0
  3094.    DURATADELLARIGA=-1
  3095.   End If 
  3096.  End If 
  3097.  Bob Update 
  3098. End Proc
  3099. Procedure MOSTRALEOPZIONIDIGIOCO
  3100.  'show the game options 
  3101.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"SetVariable 0,TextHeight 2+;"
  3102.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"SetVariable 1,'Bonus bricks Coloured' TextWidth 10+;"
  3103.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"SetVariable 2,0VAriable 5+ 4* 3+;"
  3104.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"BAse ScreenWidth 1VAriable- 2/,ScreenHeight 2VAriable- 2/;"
  3105.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"SIze 1VAriable,2VAriable;"
  3106.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"INk 38,0,0;"
  3107.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicBox 0,0,1VAriable 1-,2VAriable 1-;"
  3108.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"INk 37,0,0;"
  3109.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 0,2VAriable 2-,0,0;"
  3110.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 0,0,1VAriable 2-,0;"
  3111.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"INk 39,0,0;"
  3112.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 1VAriable 1-,1,1VAriable 1-,2VAriable 1-;"
  3113.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 1VAriable 1-,2VAriable 1-,1,2VAriable 1-;"
  3114.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"SetVariable 3,'Highest' TextWidth 1- 2+;"
  3115.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"SetVariable 4,'Coloured' TextWidth 1- 2+;"
  3116.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"SetVariable 5,'Disabled' TextWidth 1- 2+;"
  3117.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"SetVariable 6,'Disabled' TextWidth 1- 2+;"
  3118.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"PrintOutline 3,3,'Top score',21 32+,21;"
  3119.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"PrintOutline 3,3 0VAriable+ 5+,'Bonus bricks',20 32+,20;"
  3120.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"PrintOutline 3,0VAriable 5+ 2* 3+,'Video sync',21 32+,21;"
  3121.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"PrintOutline 3,0VAriable 5+ 3* 3+,'Music',20 32+,20;"
  3122.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"BUtton 1,1VAriable 3VAriable- 1- 5-,2,3VAriable 4+,0VAriable 4+,7VAriable,0,1;"
  3123.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"[INk 38,0,0;"
  3124.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicBox 0,0,3VAriable 3+,0VAriable 3+;"
  3125.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"IF ButtonPosition 0=;[SetWriting 1;PrintOutline 3,3,'Higher',7,6;]"
  3126.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"IF ButtonPosition 1=;[SetWriting 1;PrintOutline 3,3,'Highest',7,6;]"
  3127.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"INk 37,0,0;"
  3128.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 0,0VAriable 3+,0,0;"
  3129.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 0,0,3VAriable 3+,0;"
  3130.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"INk 39,0,0;"
  3131.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 3VAriable 3+,1,3VAriable 3+,0VAriable 3+;"
  3132.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 3VAriable 3+,0VAriable 3+,1,0VAriable 3+;]"
  3133.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"[]"
  3134.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"BUtton 2,1VAriable 4VAriable- 5- 1-,0VAriable 1- 5+ 3+,4VAriable 1- 4+,0VAriable 4+,8VAriable,0,1;"
  3135.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"[INk 38,0,0;"
  3136.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicBox 0,0,4VAriable 3+,0VAriable 3+;"
  3137.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"IF ButtonPosition 0=;[SetWriting 1;PrintOutline 3,3,'Standard',7,6;]"
  3138.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"IF ButtonPosition 1=;[SetWriting 1;PrintOutline 3,3,'Coloured',7,6;]"
  3139.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"INk 37,0,0;"
  3140.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 0,0VAriable 3+,0,0;"
  3141.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 0,0,4VAriable 3+,0;"
  3142.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"INk 39,0,0;"
  3143.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 4VAriable 3+,1,4VAriable 3+,0VAriable 3+;"
  3144.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 4VAriable 3+,0VAriable 3+,1,0VAriable 3+;]"
  3145.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"[]"
  3146.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"BUtton 3,1VAriable 5VAriable- 5- 1-,0VAriable 5+ 2* 1- 3+,5VAriable 4+,0VAriable 4+,9VAriable,0,1;"
  3147.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"[INk 38,0,0;"
  3148.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicBox 0,0,5VAriable 3+,0VAriable 3+;"
  3149.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"IF ButtonPosition 0=;[SetWriting 1;PrintOutline 3,3,'Disabled',7,6;]"
  3150.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"IF ButtonPosition 1=;[SetWriting 1;PrintOutline 3,3,'Enabled',7,6;]"
  3151.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"INk 37,0,0;"
  3152.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 0,0VAriable 3+,0,0;"
  3153.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 0,0,5VAriable 3+,0;"
  3154.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"INk 39,0,0;"
  3155.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 5VAriable 3+,1,5VAriable 3+,0VAriable 3+;"
  3156.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 5VAriable 3+,0VAriable 3+,1,0VAriable 3+;]"
  3157.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"[]"
  3158.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"BUtton 4,1VAriable 6VAriable- 5- 1-,0VAriable 5+ 3* 1- 3+,6VAriable 4+,0VAriable 4+,10VAriable,0,1;"
  3159.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"[INk 38,0,0;"
  3160.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicBox 0,0,5VAriable 3+,0VAriable 3+;"
  3161.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"IF ButtonPosition 0=;[SetWriting 1;PrintOutline 3,3,'Disabled',7,6;]"
  3162.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"IF ButtonPosition 1=;[SetWriting 1;PrintOutline 3,3,'Enabled',7,6;]"
  3163.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"INk 37,0,0;"
  3164.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 0,0VAriable 3+,0,0;"
  3165.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 0,0,5VAriable 3+,0;"
  3166.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"INk 39,0,0;"
  3167.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 6VAriable 3+,1,5VAriable 3+,0VAriable 3+;"
  3168.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 6VAriable 3+,0VAriable 3+,1,0VAriable 3+;]"
  3169.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"[ButtonChange 4,10VAriable;]"
  3170.  _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"EXit;"
  3171.  MESSAGGIOPERLEOPZIONI$="Normally the seven flashing orange digits"+ACAPO$
  3172.  MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"column reports the highest score but, in"+ACAPO$
  3173.  MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"the following requester, you can enable"+ACAPO$
  3174.  MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"it showing the lowerst of the top hundred"+ACAPO$
  3175.  MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"scores that is higher than your score!"+ACAPO$
  3176.  MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"In the requester there is also an option"+ACAPO$
  3177.  MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"to enable the video sync for a playable"+ACAPO$
  3178.  MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"game on a very fast Amiga!"+ACAPO$
  3179.  MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"You can choose also to have coloured or"+ACAPO$
  3180.  MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"standard bonus bricks into the game."+ACAPO$
  3181.  MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"Now you can have a background motive."+ACAPO$
  3182.  MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"Press a (mouse) key for the requester"+ACAPO$
  3183.  MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"and enable or disable the options as"+ACAPO$
  3184.  MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"you wish..."+ACAPO$
  3185.  MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"Press the Esc key to leave these options..."
  3186.  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[MESSAGGIOPERLEOPZIONI$,20,20,1,1000]
  3187.  Show : Autoback 1 : Screen Copy Physic To Logic
  3188.  Dialog Open 1,_INTERFACCIAPERLEOPZIONI$
  3189.  Vdialog(1,3)=FONTEDICARATTERI
  3190.  Vdialog(1,7)=MOSTRASOLOILPUNTEGGIOMASSIMO
  3191.  Vdialog(1,8)=MATTONCINIDIPOTENZIAMENTOCOLORATI
  3192.  Vdialog(1,9)=RITARDODELGIOCO
  3193.  Vdialog(1,10)=MOTIVODIFONDOCARICATO
  3194.  _INTERFACCIAPERLEOPZIONI=Dialog Run(1)
  3195.  DURATADELLINTERFACCIAPERLEOPZIONI=120
  3196.  Repeat 
  3197.   Screen Swap : Screen Copy Physic To Logic
  3198.   PRECEDENTEMOSTRASOLOILPUNTEGGIOMASSIMO=MOSTRASOLOILPUNTEGGIOMASSIMO
  3199.   MOSTRASOLOILPUNTEGGIOMASSIMO=Rdialog(1,1)
  3200.   If MOSTRASOLOILPUNTEGGIOMASSIMO<>PRECEDENTEMOSTRASOLOILPUNTEGGIOMASSIMO
  3201.    If MOSTRASOLOILPUNTEGGIOMASSIMO=1
  3202.     If EFFETTISONORICARICATI=2
  3203.      Sam Play VOCE,17 : Proc VOCESEGUENTE
  3204.     Else If EFFETTISONORICARICATI=1
  3205.      Bell 10
  3206.     End If 
  3207.    Else 
  3208.     If EFFETTISONORICARICATI=2
  3209.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  3210.     Else If EFFETTISONORICARICATI=1
  3211.      Bell 30
  3212.     End If 
  3213.    End If 
  3214.    Screen Swap : Screen Copy Physic To Logic
  3215.   End If 
  3216.   PRECEDENTEMATTONCINIDIPOTENZIAMENTOCOLORATI=MATTONCINIDIPOTENZIAMENTOCOLORATI
  3217.   MATTONCINIDIPOTENZIAMENTOCOLORATI=Rdialog(1,2)
  3218.   If MATTONCINIDIPOTENZIAMENTOCOLORATI<>PRECEDENTEMATTONCINIDIPOTENZIAMENTOCOLORATI
  3219.    If MATTONCINIDIPOTENZIAMENTOCOLORATI=1
  3220.     OGGETTI$=OGGETTICOLORATI$
  3221.     If EFFETTISONORICARICATI=2
  3222.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  3223.     Else If EFFETTISONORICARICATI=1
  3224.      Bell 30
  3225.     End If 
  3226.    Else 
  3227.     OGGETTI$=OGGETTISTANDARD$
  3228.     If EFFETTISONORICARICATI=2
  3229.      Sam Play VOCE,17 : Proc VOCESEGUENTE
  3230.     Else If EFFETTISONORICARICATI=1
  3231.      Bell 10
  3232.     End If 
  3233.    End If 
  3234.    Screen Swap : Screen Copy Physic To Logic
  3235.    Proc CARICAGLIOGGETTI
  3236.    Proc CREALEIMMAGINIPERLERIGHE
  3237.    If M0DULOMEDCARICATO=True
  3238.     Proc SUONAILMODULOMED
  3239.    End If 
  3240.   End If 
  3241.   PRECEDENTERITARDODELGIOCO=RITARDODELGIOCO
  3242.   RITARDODELGIOCO=Rdialog(1,3)
  3243.   If RITARDODELGIOCO<>PRECEDENTERITARDODELGIOCO
  3244.    If RITARDODELGIOCO=1
  3245.     If EFFETTISONORICARICATI=2
  3246.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  3247.     Else If EFFETTISONORICARICATI=1
  3248.      Bell 30
  3249.     End If 
  3250.    Else 
  3251.     If EFFETTISONORICARICATI=2
  3252.      Sam Play VOCE,17 : Proc VOCESEGUENTE
  3253.     Else If EFFETTISONORICARICATI=1
  3254.      Bell 10
  3255.     End If 
  3256.    End If 
  3257.    Screen Swap : Screen Copy Physic To Logic
  3258.   End If 
  3259.   If M0DULOMEDCARICATO=False
  3260.    PRECEDENTEMOTIVODIFONDOCARICATO=MOTIVODIFONDOCARICATO
  3261.    MOTIVODIFONDOCARICATO=Rdialog(1,4)
  3262.    If MOTIVODIFONDOCARICATO<>PRECEDENTEMOTIVODIFONDOCARICATO
  3263.     If MOTIVODIFONDOCARICATO=1
  3264.      Proc CARICAILMOTIVODIFONDO
  3265.      If MOTIVODIFONDOCARICATO=1
  3266.       Proc CARICARAWOIFF
  3267.       Erase BANCOTEMPORANEO
  3268. '      Every On  
  3269. '      Every 900 Proc SUONAILMOTIVODIFONDO 
  3270.      End If 
  3271.     End If 
  3272.     If MOTIVODIFONDOCARICATO=1
  3273.      If EFFETTISONORICARICATI=2
  3274.       Sam Play VOCE,16 : Proc VOCESEGUENTE
  3275.      Else If EFFETTISONORICARICATI=1
  3276.       Bell 30
  3277.      End If 
  3278.     Else 
  3279.      If EFFETTISONORICARICATI=2
  3280.       Sam Play VOCE,17 : Proc VOCESEGUENTE
  3281.      Else If EFFETTISONORICARICATI=1
  3282.       Bell 10
  3283.      End If 
  3284. '     Every Off  
  3285.      Erase BANCOMOTIVODIFONDO
  3286.      Erase BANCOTEMPORANEO
  3287.     End If 
  3288.     Vdialog(1,10)=MOTIVODIFONDOCARICATO
  3289.     Screen Swap : Screen Copy Physic To Logic
  3290.    End If 
  3291.   End If 
  3292.   _ASPETTA[25]
  3293.   If DURATADELLINTERFACCIAPERLEOPZIONI>0
  3294.    Dec DURATADELLINTERFACCIAPERLEOPZIONI
  3295.   Else 
  3296.    TASTO=27
  3297.   End If 
  3298.  Until TASTO=27
  3299.  Dialog Close 1
  3300.  Hide 
  3301.  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
  3302.  Autoback 0
  3303. End Proc
  3304. Procedure MOSTRALEBARRERIMASTE
  3305.  'show the remained balls 
  3306.  _BARRERIMASTE=_BARRE-1
  3307.  If _BARRERIMASTE>-1
  3308.   CIFRA=_BARRERIMASTE/100 mod 10
  3309.   Paste Bob 273,11,53+CIFRA
  3310.   CIFRA=_BARRERIMASTE/10 mod 10
  3311.   Paste Bob 289,11,53+CIFRA
  3312.   CIFRA=_BARRERIMASTE mod 10
  3313.   Paste Bob 305,11,53+CIFRA
  3314.  End If 
  3315. End Proc
  3316. Procedure NEMICIINCAMPO
  3317.  'manage the enemies
  3318.  If COMPORTAMENTODEINEMICI=0
  3319.   If NEMICOUNO(0)=0
  3320.    XDIPARTENZANEMICOUNO(0)=Rnd(1)
  3321.    If XDIPARTENZANEMICOUNO(0)=0
  3322.     XNEMICOUNO(0)=-11
  3323.     ROTAZIONENEMICOUNO(0)=-1
  3324.    Else If XDIPARTENZANEMICOUNO(0)=1
  3325.     XNEMICOUNO(0)=Screen Width-LARGHEZZAPANNELLO+11
  3326.     ROTAZIONENEMICOUNO(0)=1
  3327.    End If 
  3328.    YNEMICOUNO(0)=Rnd(17*11)+11
  3329.    LIMITI[YNEMICOUNO(0),11,18*11-1] : YNEMICOUNO(0)=Param
  3330.    NEMICOUNO(0)=Rnd(35)+1
  3331.   Else 
  3332.    If RITARDODEINEMICIUNO=0
  3333.     Add NEMICOUNO(0),ROTAZIONENEMICOUNO(0),1 To IMMAGININEMICOUNO
  3334.     If XDIPARTENZANEMICOUNO(0)=0
  3335.      Inc XNEMICOUNO(0)
  3336.     Else If XDIPARTENZANEMICOUNO(0)=1
  3337.      Dec XNEMICOUNO(0)
  3338.     End If 
  3339.     Bob OGGETTONEMICOUNO,XNEMICOUNO(0),YNEMICOUNO(0),IMMAGINENEMICOUNO(NEMICOUNO(0)-1)
  3340.     Proc ILNEMICOUNOESTATOCOLPITO[0]
  3341.     Proc ILNEMICOUNOEUSCITODALCAMPODIGIOCO[0]
  3342.    End If 
  3343.    Add RITARDODEINEMICIUNO,1,0 To 4
  3344.   End If 
  3345.  End If 
  3346. End Proc
  3347. Procedure _PAPEROALIENOINCAMPO
  3348.  'manage the alien duck 
  3349.  If _PAPEROALIENO=0
  3350.   XPAPEROALIENO=Rnd(XFINALERIGA) : YPAPEROALIENO=-20
  3351.   GRADIPAPEROALIENO=45 : _PAPEROALIENO=1
  3352.  Else 
  3353.   If RITARDOPAPERO=0
  3354.    Add IMMAGINEPAPEROALIENO,1,0 To IMMAGINIPAPERO-1
  3355.    Inc YPAPEROALIENO
  3356.   End If 
  3357.   If _PAPEROINCAMPO=FALSO
  3358.    Add RITARDOPAPERO,1,0 To 12
  3359.   End If 
  3360.   Add GRADIPAPEROALIENO,_PAPEROALIENO
  3361.   If GRADIPAPEROALIENO=90
  3362.    GUANOINCAMPO=VERO
  3363.   Else If _PAPEROALIENO=1 and GRADIPAPEROALIENO=135
  3364.    _PAPEROALIENO=-1
  3365.   Else If _PAPEROALIENO=-1 and GRADIPAPEROALIENO=45
  3366.    _PAPEROALIENO=1
  3367.   End If 
  3368.   XMOVIMENTOPAPEROALIENO=Cos(GRADIPAPEROALIENO)*80
  3369.   YMOVIMENTOPAPEROALIENO=Sin(GRADIPAPEROALIENO)*80-50
  3370.   Bob OGGETTOPAPEROALIENO,XPAPEROALIENO+XMOVIMENTOPAPEROALIENO,YPAPEROALIENO+YMOVIMENTOPAPEROALIENO,IMMAGINEPAPEROALIENO(IMMAGINEPAPEROALIENO)
  3371.   Proc ILPAPEROALIENOESTATOCOLPITO
  3372.   Proc ILPAPEROALIENOEUSCITODALCAMPODIGIOCO
  3373.  End If 
  3374. End Proc
  3375. Procedure _PAPEROINCAMPO
  3376.  'manage the duck 
  3377.  Bob OGGETTOPAPERO,XPAPERO,YPAPERO,IMMAGINEPAPERO(IMMAGINEPAPERO)
  3378.  If RITARDOPAPERO=0
  3379.   Add IMMAGINEPAPERO,1,0 To IMMAGINIPAPERO-1
  3380.  End If 
  3381.  Add RITARDOPAPERO,1,0 To 12
  3382.  If MATTONCINODATROVAREPERILPAPERO<247
  3383.   If MATTONCINO(MATTONCINODATROVAREPERILPAPERO)>0
  3384.    XMATTONCINOPERILPAPERO=X0ZONA(MATTONCINODATROVAREPERILPAPERO)-XPAPERO
  3385.    YMATTONCINOPERILPAPERO=Y0ZONA(MATTONCINODATROVAREPERILPAPERO)-YPAPERO
  3386.    If Abs(XMATTONCINOPERILPAPERO)+Abs(YMATTONCINOPERILPAPERO)<DISTANZADELMATTONCINOPIUVICINOALPAPERO
  3387.     DISTANZADELMATTONCINOPIUVICINOALPAPERO=Abs(XMATTONCINOPERILPAPERO)+Abs(YMATTONCINOPERILPAPERO)
  3388.     MATTONCINOPERILPAPERO=MATTONCINODATROVAREPERILPAPERO
  3389.    End If 
  3390.   End If 
  3391.   Add MATTONCINODATROVAREPERILPAPERO,1,0 To 247
  3392.  Else 
  3393.   If MATTONCINO(MATTONCINOPERILPAPERO)>0
  3394.    XDISTANZADELPAPERODALMATTONCINOPIUVICINO=X0ZONA(MATTONCINOPERILPAPERO)+10-XPAPERO
  3395.    If XDISTANZADELPAPERODALMATTONCINOPIUVICINO>0
  3396.     Inc XPAPERO
  3397.    Else If XDISTANZADELPAPERODALMATTONCINOPIUVICINO<0
  3398.     Dec XPAPERO
  3399.    End If 
  3400.    YDISTANZADELPAPERODALMATTONCINOPIUVICINO=Y0ZONA(MATTONCINOPERILPAPERO)+5-YPAPERO
  3401.    If YDISTANZADELPAPERODALMATTONCINOPIUVICINO>0
  3402.     Inc YPAPERO
  3403.    Else If YDISTANZADELPAPERODALMATTONCINOPIUVICINO<0
  3404.     Dec YPAPERO
  3405.    End If 
  3406.    If XDISTANZADELPAPERODALMATTONCINOPIUVICINO=0 and YDISTANZADELPAPERODALMATTONCINOPIUVICINO=0
  3407.     Proc CANCELLAILPAPERO
  3408.     X0MATTONCINO=X0ZONA(MATTONCINOPERILPAPERO)
  3409.     Y0MATTONCINO=Y0ZONA(MATTONCINOPERILPAPERO)
  3410.     X1MATTONCINO=X0MATTONCINO+19
  3411.     Y1MATTONCINO=Y0MATTONCINO+9
  3412.     Dec MATTONCINI : Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
  3413.     ESPLOSIONEMATTONCINO(MATTONCINOPERILPAPERO)=1
  3414.     Proc MATTONCINIDIPOTENZIAMENTO[MATTONCINOPERILPAPERO+1,Rnd(9)]
  3415.     MATTONCINO(MATTONCINOPERILPAPERO)=0
  3416.     Proc RIDISEGNODELMATTONCINO[MATTONCINOPERILPAPERO+1,1000]
  3417.    End If 
  3418.   Else 
  3419.    MATTONCINODATROVAREPERILPAPERO=0
  3420.    DISTANZADELMATTONCINOPIUVICINOALPAPERO=1000
  3421.   End If 
  3422.  End If 
  3423. End Proc
  3424. Procedure RIDISEGNODELMATTONCINO[MATTONCINO,DURATADELRIDISEGNODELMATTONCINO]
  3425.  'redraw the hitted bricks  
  3426.  For MATTONCINODARIDISEGNARE=0 To MASSIMOMATTONCINIDARIDISEGNARE-1
  3427.   If MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=MATTONCINO
  3428.    DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)=DURATADELRIDISEGNODELMATTONCINO
  3429.   Else If DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)=0
  3430.    MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=MATTONCINO
  3431.    DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)=DURATADELRIDISEGNODELMATTONCINO
  3432.    Pop Proc
  3433.   End If 
  3434.  Next MATTONCINODARIDISEGNARE
  3435. End Proc
  3436. Procedure RIMETTILOSFONDO
  3437.  'redraw the screen 
  3438.  Put Block 1
  3439. End Proc
  3440. Procedure RUBAPALLINAINCAMPO
  3441.  'manage the ballthief
  3442.  If PALLINASCELTADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
  3443.   PALLINA=Rnd(MASSIMOPALLINEINCAMPO-1)
  3444.   If PALLINA(PALLINA)=VERO
  3445.    PALLINASCELTADALRUBAPALLINA=PALLINA
  3446.    YRUBAPALLINA=0
  3447.    If EFFETTISONORICARICATI=2
  3448.     Sam Play VOCE,13 : Proc VOCESEGUENTE
  3449.    Else If EFFETTISONORICARICATI=1
  3450.     Bell 4
  3451.    End If 
  3452.   End If 
  3453.  Else 
  3454.   Bob OGGETTORUBAPALLINA,XRUBAPALLINA,YRUBAPALLINA,IMMAGINERUBAPALLINA(IMMAGINERUBAPALLINA)
  3455.   If PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
  3456.    If PALLINA(PALLINASCELTADALRUBAPALLINA)=VERO
  3457.     XPALLINA=Int(XPALLINA#(PALLINASCELTADALRUBAPALLINA))
  3458.     YPALLINA=Int(YPALLINA#(PALLINASCELTADALRUBAPALLINA))
  3459.     XRUBAPALLINA=XPALLINA
  3460.     If YRUBAPALLINA>YPALLINA
  3461.      Dec YRUBAPALLINA
  3462.     Else If YRUBAPALLINA<YPALLINA
  3463.      Inc YRUBAPALLINA
  3464.     Else 
  3465.      PALLINAPRESADALRUBAPALLINA=PALLINASCELTADALRUBAPALLINA
  3466.      PALLINA(PALLINAPRESADALRUBAPALLINA)=FALSO
  3467.     End If 
  3468.    Else 
  3469.     PALLINASCELTADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
  3470.     PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
  3471.    End If 
  3472.   Else 
  3473.    Bob OGGETTOPALLINA+PALLINAPRESADALRUBAPALLINA,XRUBAPALLINA,YRUBAPALLINA,IMMAGINEPALLINA
  3474.    Add XRUBAPALLINA,Rnd(6)-3
  3475.    Proc LIMITI[XRUBAPALLINA,11,XFINALERIGA-11] : XRUBAPALLINA=Param
  3476.    Dec YRUBAPALLINA
  3477.    If RITARDODELLARIPETIZIONEDELSUONODELLAPALLINARUBATA=0
  3478.     If EFFETTISONORICARICATI=2
  3479.      Sam Play VOCE,14 : Proc VOCESEGUENTE
  3480.     Else If EFFETTISONORICARICATI=1
  3481.      Bell 4
  3482.     End If 
  3483.    End If 
  3484.    Add RITARDODELLARIPETIZIONEDELSUONODELLAPALLINARUBATA,1,0 To 49
  3485.    Proc ILRUBAPALLINAEUSCITODALCAMPODIGIOCO
  3486.   End If 
  3487.   Proc ILRUBAPALLINAESTATOCOLPITO
  3488.  End If 
  3489. End Proc
  3490. Procedure SALVAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
  3491.  'save the top hundred scores 
  3492.  If Exist(PUNTEGGI$) Then Kill PUNTEGGI$
  3493.  Open Out 1,PUNTEGGI$
  3494.  For POSIZIONI=0 To 99
  3495.   If Val(PUNTEGGIODELGIOCATORE$(POSIZIONI))>0
  3496.    Print #1,NOMEDELGIOCATORE$(POSIZIONI)
  3497.    Print #1,PUNTEGGIODELGIOCATORE$(POSIZIONI)
  3498.    Print #1,LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONI)
  3499.   End If 
  3500.  Next POSIZIONI
  3501.  Close 1
  3502. End Proc
  3503. Procedure SUONAILMODULOMED
  3504.  Med Play 
  3505. End Proc
  3506. Procedure SUONAILMOTIVODIFONDO
  3507.  'play the background motive
  3508.  Sam Raw 8,Start(BANCODELMOTIVODIFONDO),Length(BANCODELMOTIVODIFONDO),8363
  3509. End Proc
  3510. Procedure TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTO$,C0LORETESTOPRIMALINEA,C0LORETESTOSECONDALINEA,C0LOREBORDO,TEMP0]
  3511.  'manage the texts  
  3512.  If TESTO$="" Then Get Block 1,0,0,Screen Width,Screen Height
  3513.  ALTEZZALINEA=ALTEZZAFONT+3
  3514.  LINEE=1
  3515.  POSIZIONEPAROLA=1
  3516.  Repeat 
  3517.   ACAPO=Instr(TESTO$,ACAPO$,POSIZIONEPAROLA)
  3518.   If ACAPO>0 Then Inc LINEE : POSIZIONEPAROLA=ACAPO+1
  3519.  Until ACAPO=0
  3520.  If LINEE=1
  3521.   C0LORETESTO=C0LORETESTOPRIMALINEA
  3522.   XINIZIOTESTO=(Screen Width-Text Length(TESTO$))/2
  3523.   YINIZIOTESTO=(Screen Height-(ALTEZZALINEA))/2+Text Base
  3524.   Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO,TESTO$,C0LORETESTO,C0LOREBORDO]
  3525.   Screen Swap : Proc RIMETTILOSFONDO
  3526.   Proc _ASPETTA[TEMP0]
  3527.   If TASTO=27
  3528.    Pop Proc
  3529.   End If 
  3530.  Else 
  3531.   Dim TESTO$(LINEE-1)
  3532.   POSIZIONEPAROLA=1
  3533.   For LINEA=0 To LINEE-1
  3534.    ACAPO=Instr(TESTO$,ACAPO$,POSIZIONEPAROLA)
  3535.    If ACAPO>0
  3536.     TESTO$(LINEA)=Mid$(TESTO$,POSIZIONEPAROLA,ACAPO-POSIZIONEPAROLA)
  3537.     POSIZIONEPAROLA=ACAPO+1
  3538.    Else 
  3539.     TESTO$(LINEA)=Right$(TESTO$,Len(TESTO$)-POSIZIONEPAROLA+1)
  3540.    End If 
  3541.   Next LINEA
  3542.   ALTEZZATESTO=ALTEZZALINEA*LINEE
  3543.   If ALTEZZATESTO<Screen Height
  3544.    ILTESTOSTATUTTONELLOSCHERMO=VERO
  3545.   Else 
  3546.    For LINEA=LINEE To 2 Step -1
  3547.     ALTEZZATESTO=ALTEZZALINEA*LINEA
  3548.     If ALTEZZATESTO<Screen Height
  3549.      NUMEROMASSIMODILINEENELLOSCHERMO=LINEA
  3550.      Exit 
  3551.     End If 
  3552.    Next LINEA
  3553.   End If 
  3554.   If ILTESTOSTATUTTONELLOSCHERMO=VERO
  3555.    YINIZIOTESTO=(Screen Height-ALTEZZATESTO)/2+Text Base
  3556.    For LINEA=0 To LINEE-1
  3557.     If LINEA mod 2=0
  3558.      C0LORETESTO=C0LORETESTOPRIMALINEA
  3559.     Else 
  3560.      C0LORETESTO=C0LORETESTOSECONDALINEA
  3561.     End If 
  3562.     XINIZIOTESTO=(Screen Width-Text Length(TESTO$(LINEA)))/2
  3563.     Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO+ALTEZZALINEA*LINEA,TESTO$(LINEA),C0LORETESTO,C0LOREBORDO]
  3564.    Next LINEA
  3565.    Screen Swap : Proc RIMETTILOSFONDO
  3566.    Proc _ASPETTA[TEMP0]
  3567.    If TASTO=27
  3568.     Pop Proc
  3569.    End If 
  3570.   Else 
  3571.    YINIZIOTESTO=(Screen Height-ALTEZZATESTO)/2+Text Base
  3572.    For LINEA=0 To NUMEROMASSIMODILINEENELLOSCHERMO-1
  3573.     If(LINEA) mod 2=0
  3574.      C0LORETESTO=C0LORETESTOPRIMALINEA
  3575.     Else 
  3576.      C0LORETESTO=C0LORETESTOSECONDALINEA
  3577.     End If 
  3578.     XINIZIOTESTO=(Screen Width-Text Length(TESTO$(LINEA)))/2
  3579.     Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO+ALTEZZALINEA*LINEA,TESTO$(LINEA),C0LORETESTO,C0LOREBORDO]
  3580.    Next LINEA
  3581.    Screen Swap : Proc RIMETTILOSFONDO
  3582.    Proc _ASPETTA[TEMP0*NUMEROMASSIMODILINEENELLOSCHERMO]
  3583.    If TASTO=27
  3584.     Pop Proc
  3585.    End If 
  3586.    For LINEA=1 To LINEE-NUMEROMASSIMODILINEENELLOSCHERMO
  3587.     For LINEANELLOSCHERMO=0 To NUMEROMASSIMODILINEENELLOSCHERMO-1
  3588.      If(LINEA+LINEANELLOSCHERMO) mod 2=0
  3589.       C0LORETESTO=C0LORETESTOPRIMALINEA
  3590.      Else 
  3591.       C0LORETESTO=C0LORETESTOSECONDALINEA
  3592.      End If 
  3593.      XINIZIOTESTO=(Screen Width-Text Length(TESTO$(LINEANELLOSCHERMO+LINEA)))/2
  3594.      Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO+ALTEZZALINEA*LINEANELLOSCHERMO,TESTO$(LINEANELLOSCHERMO+LINEA),C0LORETESTO,C0LOREBORDO]
  3595.     Next LINEANELLOSCHERMO
  3596.     Screen Swap : Proc RIMETTILOSFONDO
  3597.     Proc _ASPETTA[TEMP0]
  3598.     If TASTO=27
  3599.      Pop Proc
  3600.     End If 
  3601.    Next LINEA
  3602.   End If 
  3603.  End If 
  3604. End Proc
  3605. Procedure T0GLILARCOBALENO
  3606.  'fade out the rainbow  
  3607.  For LINEADELLARCOBALENO=271 To 271-255 Step -1
  3608.   Rainbow 0,257,0,LINEADELLARCOBALENO
  3609.   Wait Vbl 
  3610.  Next LINEADELLARCOBALENO
  3611. End Proc
  3612. Procedure T0GLILARIGA
  3613.  'turn off the row  
  3614.  Bob Off OGGETTORIGA
  3615.  Bob Update 
  3616. End Proc
  3617. Procedure T0GLIILLASER
  3618.  'turn off the laser beam 
  3619.  Bob Off OGGETTOLASER
  3620.  Bob Update 
  3621. End Proc
  3622. Procedure T0GLIILPANNELLO
  3623.  'fade out the panel  
  3624.  Ink 0
  3625.  For LINEAPANNELLO=255 To 0 Step -1
  3626.   Draw XPANNELLO,LINEAPANNELLO To XPANNELLO+LARGHEZZAPANNELLO-1,LINEAPANNELLO
  3627.   Wait Vbl 
  3628.  Next LINEAPANNELLO
  3629. End Proc
  3630. Procedure T0GLIIMATTONCINI
  3631.  'fade out the bricks 
  3632.  Ink 0
  3633.  For MATTONCINO=246 To 0 Step -1
  3634.   If MATTONCINO(MATTONCINO)>0
  3635.    Bar X0ZONA(MATTONCINO),Y0ZONA(MATTONCINO) To X0ZONA(MATTONCINO)+19,Y0ZONA(MATTONCINO)+9
  3636.    Wait Vbl 
  3637.   End If 
  3638.  Next MATTONCINO
  3639. End Proc
  3640. Procedure TROVAILFONTDATA70
  3641.  'look for the Data70 font  
  3642.  If Exist("FONTS:")=VERO
  3643.   TESTOFONTEDICARATTERI$="I am looking for the Data70 font..."+ACAPO$
  3644.   TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"...in your FONTS: drawer."+ACAPO$
  3645.   TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"Wait for a moment, please..."
  3646.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERI$,17,17,19,-1]
  3647.   Get Disc Fonts 
  3648.   CISONOFONTIDICARATTERI=FALSO
  3649.   For FONTEDICARATTERI=1 To 65536
  3650.    FONTEDICARATTERI$=Right$(Left$(Font$(FONTEDICARATTERI),30)-" ",5)
  3651.    If FONTEDICARATTERI$=".font"
  3652.     CISONOFONTIDICARATTERI=VERO
  3653.    End If 
  3654.    FONTEDICARATTERI$=Left$(Font$(FONTEDICARATTERI),30)-" "
  3655.    If FONTEDICARATTERI$="Data70.font"
  3656.     Exit 
  3657.    End If 
  3658.   Next FONTEDICARATTERI
  3659.   If CISONOFONTIDICARATTERI=FALSO
  3660.    TESTOFONTEDICARATTERI$="I have found no fonts in your FONTS: drawer :("+ACAPO$
  3661.    TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"The font I am using is the Topaz font!"+ACAPO$
  3662.    TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"This font will be used for the game."+ACAPO$
  3663.    TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"Press a (mouse) key to continue..."
  3664.    Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERI$,18,18,19,250]
  3665.   Else 
  3666.    If FONTEDICARATTERI<65536
  3667.     Set Font FONTEDICARATTERI
  3668.     ALTEZZAFONT=Val(Mid$(Font$(FONTEDICARATTERI),31,2)-" ")
  3669.     TESTOFONTEDICARATTERI$="I have found the Data70 font! :)"+ACAPO$
  3670.     TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"The font I am using is the Data70 font!"+ACAPO$
  3671.     TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"This font will be used for the game."+ACAPO$
  3672.     TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"Press a (mouse) key to continue..."
  3673.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERI$,17,17,19,250]
  3674.    Else 
  3675.     TESTOFONTEDICARATTERI$="I have not found the Data70 font! :("+ACAPO$
  3676.     TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"The font I am using is the Topaz font!"+ACAPO$
  3677.     TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"This font will be used for the game."+ACAPO$
  3678.     TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"Press a (mouse) key to continue..."
  3679.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERI$,18,18,19,250]
  3680.    End If 
  3681.   End If 
  3682.  Else 
  3683.   TESTOFONTEDICARATTERI$="I have not found the FONTS: drawer :("+ACAPO$
  3684.   TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"The font I am using is the Topaz font!"+ACAPO$
  3685.   TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"This font will be used for the game."+ACAPO$
  3686.   TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"Press a (mouse) key to continue..."
  3687.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERI$,18,18,19,250]
  3688.  End If 
  3689.  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
  3690. End Proc
  3691. Procedure VOCESEGUENTE
  3692.  'select the next audio voice for the next sound  
  3693.  Add VOCE,VOCE
  3694.  If MOTIVODIFONDOCARICATO=1
  3695.   If VOCE=8 or VOCE=16
  3696.    VOCE=1
  3697.   End If 
  3698.  Else 
  3699.   If VOCE=16
  3700.    VOCE=1
  3701.   End If 
  3702.  End If 
  3703. End Proc